J'ai essayé de trouver la réponse à cette question à la fois sur le forum de Spring et en cherchant StackOverflow. J'ai trouvé beaucoup de pages décrivant des architectures horribles et demandant à peu près la même chose que moi, mais mon utilisation est différente, alors s'il vous plaît :-)Accéder à HttpServletRequest à partir du conseil AOP au printemps 2.5 avec les annotations
J'ai un projet Spring 2.5 utilisant des contrôleurs de formulaires basés sur des annotations essentiellement comme ceci:
@RequestMapping("/edit/someObject")
public String handleSubmit(HttpServletRequest request, HttpServletResponse response, SomeObject someObject, BindingResult result) {
// Some check here
if(result.hasErrors()) {
return "form";
} else {
SomeObjectService.update(someObject);
return "redirect:/view/someObject";
}
}
dans ce que je vérifie pour une propriété http dans le HttpServletRequest et utiliser le HttpServletResponse d'envoyer une redirection si cette propriété a une certaine valeur. Cette vérification est faite beaucoup (mais pas tous) des contrôleurs de formulaire dans cette application. Ce que je voudrais faire est de créer une annotation @CheckedSubmit traitée par un conseil AOP pour faire cette vérification, puis de supprimer les paramètres HttpServletRequest et HttpServletResponse du contrôleur. Mon problème est que je n'ai aucune idée comment accéder aux HttpServletRequest et HttpServletResponse courants de ce conseil AOP sans utiliser ces deux paramètres (inutilisés) à la méthode annotée, ce que j'ai essayé d'éviter en premier lieu.
Résumé: Comment accéder à la méthode HttpServletRequest/Response from AOP sur une méthode annotée @RequestMapping?
Avec la remarque ajoutée que la solution 2 fonctionne pour les objets non instanciés par Spring lorsque @Configurable est utilisé (nécessite AspectJ) – Tomas