Come è possibile impostare in modo condizionato il codice di stato HTTP in un gestore di richieste MVC di Spring?Impostazione condizionale dello stato HTTP senza manipolazione diretta di HttpServletResponse
Ho un gestore di richieste che risponde alle richieste POST, per la creazione di una nuova risorsa. Se la richiesta è valida, desidero reindirizzare all'URI della nuova risorsa, restituendo un codice di stato HTTP 201 (creato). Se la richiesta non è valido lo voglio per dare all'utente la possibilità di correggere l'errore nel modulo inviato, e non dovrebbe dare un codice di stato di 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";
}
}
Ma che non riconoscono lo stato di risposta corretto per il caso di reindirizzamento.
Non posso semplicemente aggiungere uno @ResponseStatus
, perché ci sono due stati possibili. Spero che ci sia un modo più ordinato di manually manipulating the HttpServletResponse
. E voglio indicare il nome della vista da usare, quindi non posso have the request handler return a ResponseEntity
object with the status set appropriately.
"In tal caso, non è possibile utilizzare un reindirizzamento" Lo so. Questo è il punto della mia domanda – Raedwald