2010-06-30 13 views

Respuesta

42

Puede:

  • obtener el HttpServletResponse e imprimir para su Writer o OutputStream (dependiendo de si desea enviar datos de texto o binarios)

    @RequestMapping(value = "/something") 
    public void helloWorld(HttpServletResponse response) { 
        response.getWriter().println("Hello World") 
    } 
    
  • Uso @ResponseBody:

    @RequestMapping(value = "/something") 
    @ResponseBody 
    public String helloWorld() { 
        return "Hello World"; 
    } 
    

De este modo, su texto Hello World se escribirá en el flujo de respuesta.

+0

por lo @responsebody continuación, hace caso omiso de la opinión de resolver? Estoy usando freemarker – Blankman

+0

Creo que sí ... – Bozho

+0

¿Se puede usar un método similar para enviar un archivo directamente al flujo de salida? Gracias. – kmehta

1

Si utiliza un controlador anotado (o no anotada para el caso creo ...), se puede utilizar el argumento de un método HttpServletResponse en su controlador para obtener el flujo de salida y luego escribir en la pantalla - ver http://download.oracle.com/docs/cd/E17410_01/javaee/6/api/javax/servlet/ServletResponse.html#getOutputStream%28%29

Para obtener más información acerca de los parámetros que puede utilizar en sus controladores/manipuladores, ver http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html (sección 13.11.4)

0

estoy seguro de que es posible en algunos contextos. Por ejemplo, si usted tiene el objeto HttpServletResponse disponible para usted (como lo hace en un Controller, o si usted escribe su propia View), entonces se puede llamar getWriter() o getOutputStream() y escribir a eso.

Pero debe tener cuidado para asegurarse de que lo que está haciendo no interfiere con el uso de las plantillas de FreeMarker. Y no estoy seguro de si podría gestionarlo desde una plantilla de FreeMarker.

1

Si desea enviar algo a OutputStream, incluso si está utilizando Freemaker, sólo tiene que utilizar @ResponseBody

ejemplo:

@RequestMapping(value = "report1", method = RequestMethod.GET, produces = "application/pdf") 
    @ResponseBody 
    public void getReport1(OutputStream out) {