tutorial mvc initializr example español java spring spring-mvc

java - initializr - spring mvc vs spring boot



Cómo configurar el encabezado de respuesta en mvc de primavera (3)

Tengo un método en el que quiero establecer el control de caché y pragma del encabezado de respuesta: -

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

En este método quiero establecer el control de caché y pragma como lo hacemos en el código de servlet simple utilizando HttpservletResponse llamando al método setHeader: -

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

Busqué documentos de primavera y no pude encontrar ninguna forma directa de hacerlo, pero encontré esto:

@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); }

Pero no sé cómo usarlo


Desde Spring v. 4.1:

@RequestMapping("/something") public ResponseEntity<MyClass> handle() { return ResponseEntity.status(HttpStatus.CREATED) .header("header", "value") .body(new MyClass()); }


Si desea establecer encabezados para cada respuesta para un controlador, puede usar la anotación @ModelAttribute .

@ModelAttribute public void setVaryResponseHeader(HttpServletResponse response) { response.setHeader("Vary", "Accept"); }


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(); }