2013-08-30 16 views
24

Tôi có một phương pháp mà trong đó tôi muốn thiết lập đáp ứng tiêu đề bộ nhớ cache kiểm soát và pragma: -Làm thế nào để thiết lập tiêu đề phản ứng trong MVC mùa xuân

public String addUser(@Valid User user, BindingResult bindingResult) 
{ 
    if(bindingResult.hasErrors()) 
    { 
     bindingResult.getFieldError(); 
     return"edit"; 
    } 
    return "redirect:/welcome/profile/"+user.getName(); 
} 

Trong phương pháp này tôi muốn thiết lập bộ nhớ cache kiểm soát và pragma như chúng ta làm trong mã servlet đơn giản sử dụng HttpServletResponse gọi phương thức setHeader: -

response.setHeader("Cache-Control","no-cache,no-store,must-revalidate"); 
    response.setHeader("Pragma","no-cache"); 
    response.setDateHeader("Expires", 0); 

tôi đã tìm kiếm tài liệu mùa xuân và không thể tìm thấy bất kỳ cách trực tiếp để làm điều đó, nhưng tôi thấy điều này: -

@RequestMapping("/something") 
public ResponseEntity<String> handle(HttpEntity<byte[]> requestEntity) throws UnsupportedEncodingException 
{ 
    String requestHeader = requestEntity.getHeaders().getFirst("MyRequestHeader")); 
    byte[] requestBody = requestEntity.getBody(); 
    HttpHeaders responseHeaders = new HttpHeaders(); 
    responseHeaders.set("MyResponseHeader", "MyValue"); 
    return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED); 
} 

Nhưng tôi không biết làm thế nào để sử dụng nó

+0

_Nhưng tôi không biết cách sử dụng nó_ Có vẻ như bạn đang sử dụng nó tốt. –

Trả lời

35

Nếu bạn muốn thiết lập tiêu đề cho mỗi câu trả lời cho một bộ điều khiển bạn có thể sử dụng @ModelAttribute chú thích.

@ModelAttribute 
public void setVaryResponseHeader(HttpServletResponse response) { 
    response.setHeader("Vary", "Accept"); 
}  
14
public String addUser(@Valid User user, BindingResult bindingResult,HttpServletRequest request,HttpServletResponse response) 
    { 
     if(bindingResult.hasErrors()) 
     { 
      bindingResult.getFieldError(); 
      return"edit"; 
     } 
     response.setHeader("Cache-Control","no-cache,no-store,must-revalidate"); 
     response.setHeader("Pragma","no-cache"); 
     response.setDateHeader("Expires", 0); 
     return "redirect:/welcome/profile/"+user.getName(); 
    }