2013-06-21 26 views
7

'u doğrudan ayarlamadan koşullu olarak ayarlama Bir Spring MVC istek işleyicisinde HTTP durum kodunu nasıl uygun bir şekilde koşullu olarak ayarlayabilirim?HTTP durumunu HttpServletResponse

Yeni bir kaynak oluşturmak için POST isteklerine yanıt veren bir istek işleyicim var. İstek geçerliyse, yeni kaynağın URI'sine yeniden yönlendirilmesini ve 201 (oluşturulan) HTTP durum kodunu döndürmesini istiyorum. İstek geçersiz olursa o kullanıcıya gönderilen formda hatayı düzeltmek için bir şans vermek istiyorum, ve 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"; 
    } 

}

bir durum kodu vermemelidir Ama bu vermez Yeniden yönlendirme durumu için doğru yanıt durumu.

İki olası durum olduğundan, @ResponseStatus ekleyemiyorum. Umarım manually manipulating the HttpServletResponse'dan daha iyi bir yol vardır. Ve kullanmak için görünüm adını belirtmek istiyorum, bu yüzden ben have the request handler return a ResponseEntity object with the status set appropriately yapamam.

cevap

3

Bir 201 yanıt kodu istemeniz durumunda, kaynak oluşturulduğunda ve görünüm adı başka bir şekildeile ResponseEntity döndürebilirsiniz. Eğer öyleyse, bir yönlendirme kullanamazsınız (http kodu 301). Bakınız RedirectView.

+0

"Eğer öyleyse, bir yönlendirme kullanamazsınız" Biliyorum. Bu benim sorumun noktası – Raedwald

İlgili konular