2017-05-17 1 views
0

J'ai la configuration ci-dessous dans mon application Boot Spring:démarrage Spring abstrait contrôleur demande cartographie

@RestController 
@RequestMapping ("/main/**") 
class Child extends Parent { 
// Child code 
} 

abstract class Parent { 
// Other code 
@RequestMapping ("/sub/**") 
public ResponseEntity handle(RequestEntity re) { 

// Expected to handle requests with path pattern /main/sub/** 

} 

L'objectif est d'avoir la méthode handle() dans le contrôleur abstrait parent pour recevoir toutes les demandes entrantes pour le modèle de chemin "/ main/sub/**".

Mais ça ne marche pas. Bien que cela fonctionne si je place la méthode du handle (du contrôleur parent) dans le contrôleur enfant avec son mappage de requête. Est-ce que quelqu'un peut m'aider à identifier ce qui me manque ici?

code plus détaillé ci-dessous comme suggéré par Ralf:

@RestController 
    @RequestMapping ("/main/**") 
    class Child<T> extends Parent<T> { 
    // Child code only overrides those methods defined in the parent, and has no request mapping for any method within this class. And it does not override the handle() method defined in parent. 
    } 

    abstract class Parent<T> { 
    // Other code 
    @RequestMapping ("/sub/**") 
    public @ResponseBody ResponseEntity<?> handle(RequestEntity<T> re) { 
    // Expected to handle requests with path pattern /main/sub/ 
    } 
} 

Répondre

1

Juste essayé votre exemple, fonctionne comme prévu, sauf dans un cas: S'il y a une poignée de méthode (RequestEntity) dans votre contrôleur de l'enfant, que celui-ci remplace celui de votre contrôleur parent, et il ne sera jamais appelé. Si ce n'est pas le cas, pourriez-vous fournir le code de vos contrôleurs enfants?

+0

Merci de votre visite. J'ai ajouté le code détaillé dans mon article ci-dessus. Il n'y a pas de différence significative sauf que la mise à jour utilise une variable de modèle de classe . Je me demande si cela a quelque chose à voir avec l'échec de la cartographie des demandes. – Ram