Wie kann ich den HTTP-Statuscode bequem in einem Spring MVC-Request-Handler festlegen?Bedingte Einstellung des HTTP-Status ohne direkte Änderung der HttpServletResponse
Ich habe einen Request-Handler, der auf POST-Anfragen reagiert, um eine neue Ressource zu erstellen. Wenn die Anfrage gültig ist, möchte ich, dass sie zum URI der neuen Ressource umleitet und einen 201 (Created) HTTP-Statuscode zurückgibt. Wenn die Anforderung ungültig ist möchte ich es dem Benutzer die Möglichkeit geben, den Fehler in der vorgelegten Form zu korrigieren, und soll nicht den Statuscode 201.
@RequestMapping(value = { "/myURI/" }, method = RequestMethod.POST)
public String processNewThingForm(
@ModelAttribute(value = "name") final String name,
final BindingResult bindingResult) {
myValidator.validate(name, bindingResult);
if (!bindingResult.hasErrors()) {
getService().createThing(name);
return "redirect:" + name;
} else {
return "newThingView";
}
}
gebe aber das bedeutet nicht geben der richtige Antwortstatus für den Umleitungsfall.
Ich kann nicht einfach eine @ResponseStatus
hinzufügen, weil es zwei mögliche Status gibt. Ich hoffe, es gibt einen besseren Weg als manually manipulating the HttpServletResponse
. Und ich möchte den Namen der Ansicht angeben, damit ich nicht have the request handler return a ResponseEntity
object with the status set appropriately verwenden kann.
"Wenn ja, können Sie eine Weiterleitung nicht verwenden" Ich weiß. Das ist der Punkt meiner Frage – Raedwald