2012-01-02 830 views
7

Duplicar posibles:
Return only string message from Spring MVC 3 Controllerquiero que mi controlador de resorte para devolver una cadena sin vistas

Mi controlador de resorte tiene un punto final donde quiero solamente:

1. set the http response code 
2. return a string back, don't need to render a .jsp view page or anything. 

Así que querrás configurar el código de estado http a 200 OK o 500 etc. Y simplemente regresar una cadena como "OK".

¿Cómo puedo hacer esto o me veo forzado a representar una página con la vista .jsp?

Respuesta

11

Utilice la anotación @ResponseBody:

@RequestMapping(value="/sayHello", method=GET) 
@ResponseBody 
public String whatever() { 
    return "Hello"; 
} 

Véase el @ResponseBody ref docs para más detalles.

Puede utilizar la anotación @ResponseStatus para establecer el código en lugar de usar el HttpServletResponse directamente.

+0

Bueno, estoy configurando el estado dependiendo del flujo de código, gracias. – Blankman

+0

@Blankman Sí, necesitarás la variedad 'HttpServletResponse' entonces. –

+0

Debe agregar produce = "text/plain" a @RequestMapping; de lo contrario, el Content-Type de la respuesta seguirá siendo text/html –

12

No, no está obligado a usar la vista. Si usa una versión más reciente de Spring, puede usar la anotación @ResponseBody. Ver documentation para referencia.

Ejemplo:

@Controller 
@RequestMapping(value = "/someUrl", method = RequestMethod.GET, produces="text/plain") 
@ResponseBody 
public String returnSimpleMessage() {  
    return "OK"; 
} 

También podría utilizar HttpServletResponse como un parámetro para ajustar el estado de HTTP deseado.

Cuestiones relacionadas