Ich habe eine Ressource, die beide GET
und POST
Anfragen unterstützt. Hier ist ein Beispielcode für eine Probe Ressource:Kombinieren GET-und POST-Anfrage-Methoden in Frühjahr
@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
}
Der Code in den beiden Verfahren ist praktisch die gleiche, mit Ausnahme lässt eine variable Definition sagen. Die zwei Methoden können leicht kombiniert werden mit method = {RequestMethod.POST, RequestMethod.GET}
, und eine einfache if
innen. Ich habe versucht, aber es funktioniert nicht, weil die beiden Methoden einen anderen Parameter am Ende haben, d. H. HttpServletRequest
und BindingResult
(die @RequestParam
werden nicht benötigt und daher nicht in der POST
Anfrage benötigt). Irgendwelche Ideen, wie man die zwei Methoden kombiniert?
Warum verschiebst du deinen LANGEN CODE nicht in eine separate Methode? –
Und wenn es so lang ist, sollten Sie es sogar in mehrere kurze Methoden teilen –
Weil ich nach einer eleganteren und allgemeineren Lösung suche. Ich glaube nicht, dass es mir gut ist, eine Methode 'booksLogic' zu haben, die das einzige ist, was ich in den beiden Methoden nenne. –