Ho cercato di trovare la risposta a questa domanda sia sul forum Spring che cercando StackOverflow. Ho trovato molte pagine che descrivono orribili architetture e chiedendo la stessa cosa di me, ma il mio uso previsto è diverso, quindi ti prego di sopportare :-)Accesso a HttpServletRequest dal consiglio AOP in Spring 2.5 con annotazioni
Ho un progetto Spring 2.5 utilizzando i controller di form basati su annotazioni sostanzialmente in questo modo:
@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";
}
}
in questo ho verificare la presenza di qualche proprietà http nella HttpServletRequest e utilizzare il HttpServletResponse per inviare un redirect se questa proprietà ha un certo valore. Questo controllo è fatto molto (ma non tutti) dei controller di modulo in questa applicazione. Quello che vorrei fare è creare un'annotazione @CheckedSubmit gestita da alcuni consigli AOP per eseguire questo controllo e quindi rilasciare i parametri HttpServletRequest e HttpServletResponse dal controller.
Il mio problema è che non ho idea di come accedere al corrente HttpServletRequest e HttpServletResponse da questo consiglio AOP senza l'utilizzo di questi due come parametri (non utilizzati) per il metodo annotato, che è quello che ho cercato di evitare, in primo luogo.
Riepilogo: Come accedere alla richiesta HttpServletRequest/Response da AOP su un metodo annotato @RequestMapping?
Con l'osservazione aggiunta che la Soluzione 2 funziona per oggetti non istanziati da Spring quando viene utilizzato @Configurable (richiede AspectJ) – Tomas