2010-06-30 26 views

Trả lời

42

Bạn có thể:

  • được HttpServletResponse và in ra nó Writer hoặc OutputStream (tùy thuộc vào việc bạn muốn gửi văn bản hoặc dữ liệu nhị phân)

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

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

Do đó, văn bản Hello World của bạn sẽ được ghi vào luồng phản hồi.

+0

nên @responsebody sau đó bỏ qua resolver xem? Tôi đang sử dụng freemarker – Blankman

+0

Tôi nghĩ có. – Bozho

+0

Phương pháp tương tự có thể được sử dụng để gửi tệp trực tiếp đến luồng đầu ra không? Cảm ơn bạn. – kmehta

1

Nếu bạn sử dụng một bộ điều khiển chú thích (hoặc không chú thích cho rằng vấn đề tôi tin ...), bạn có thể sử dụng đối số phương pháp HttpServletResponse trong điều khiển của bạn để có được những dòng đầu ra và sau đó viết ra màn hình - xem http://download.oracle.com/docs/cd/E17410_01/javaee/6/api/javax/servlet/ServletResponse.html#getOutputStream%28%29

Để biết thêm thông tin về các thông số bạn có thể sử dụng trong các bộ điều khiển của bạn/xử lý, xem http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html (phần 13.11.4)

0

tôi chắc chắn rằng nó có thể trong một số ngữ cảnh. Ví dụ: nếu bạn có đối tượng HttpServletResponse có sẵn cho bạn (như bạn thực hiện trong một Controller hoặc nếu bạn viết View), thì bạn có thể gọi getWriter() hoặc getOutputStream() và ghi vào đó.

Nhưng bạn cần phải cẩn thận để đảm bảo rằng những gì bạn đang làm không ảnh hưởng đến việc bạn sử dụng mẫu FreeMarker. Và tôi không chắc liệu bạn có thể quản lý nó từ bên trong một mẫu FreeMarker hay không.

1

Nếu bạn muốn gửi một cái gì đó để OutputStream, ngay cả khi bạn đang sử dụng Freemaker, chỉ cần sử dụng @ResponseBody

dụ:

@RequestMapping(value = "report1", method = RequestMethod.GET, produces = "application/pdf") 
    @ResponseBody 
    public void getReport1(OutputStream out) { 
Các vấn đề liên quan