Ho una risorsa che supporta sia le richieste GET
e POST
. Ecco un codice di esempio per una risorsa di esempio:Combina metodi di richiesta GET e POST in primavera
@RequestMapping(value = "/books", method = RequestMethod.GET)
public ModelAndView listBooks(@ModelAttribute("booksFilter") BooksFilter filter, two @RequestParam parameters, HttpServletRequest request)
throws ParseException {
LONG CODE
}
@RequestMapping(value = "/books", method = RequestMethod.POST)
public ModelAndView listBooksPOST(@ModelAttribute("booksFilter") BooksFilter filter, BindingResult result)
throws ParseException {
SAME LONG CODE with a minor difference
}
Il codice nei due metodi è praticamente la stessa, tranne che per permette di dire una definizione variabile. I due metodi possono essere facilmente combinati utilizzando method = {RequestMethod.POST, RequestMethod.GET}
e un semplice if
all'interno. Ho provato, ma non funziona, perché i due metodi hanno un parametro diverso alla fine, ovvero HttpServletRequest
e BindingResult
(gli @RequestParam
non sono necessari e pertanto non sono necessari nella richiesta POST
). Qualche idea su come combinare i due metodi?
Perché non sposti il tuo LONG CODE in un metodo separato? –
E se è così lungo, dovresti dividerlo in diversi metodi brevi –
Perché sto cercando una soluzione più elegante e generale. Non penso di essere bravo ad avere un metodo 'booksLogic' che è l'unica cosa che chiamo nei due metodi. –