2012-01-19 40 views
5

Làm cách nào để có được HttpServletResponse object trong một phương thức trong bộ điều khiển lò xo để ứng dụng của tôi vẫn được kết hợp lỏng lẻo với API Http?Đặt loại nội dung phản hồi mà không cần sử dụng HttpServletResponse

Thanks ...

Chỉnh sửa: Thực ra những gì tôi muốn là để thiết lập ContentType của đối tượng HttpServletResponse trong controller.Does tôi mùa xuân cung cấp bất kỳ cách nào cho điều này mà không nhận được HttpServletResponse đối tượng như là đối số trong phương pháp của bộ điều khiển?

Trả lời

1

Chỉ cần chuyển nó làm đối số, ví dụ:

@RequestMapping(value="/test", method = RequestMethod.GET) 
public void test(HttpServletResponse response) { ... } 
+0

Nhưng điều này sẽ ràng buộc bộ điều khiển của tôi với API API mà tôi không muốn.Xin vui lòng xem chỉnh sửa của tôi. –

0

Tôi nghĩ rằng cách tốt nhất để xử lý này là sử dụng một cụ View-Implementation, vì đây để phản ứng-vẽ nên diễn ra.

8

tôi có thể thấy hai lựa chọn:

Nếu loại nội dung bạn muốn là tĩnh, sau đó bạn có thể thêm nó vào @RequestMapping, ví dụ

@RequestMapping(value="...", produces="text/plain") 

Điều này sẽ chỉ hoạt động nếu yêu cầu HTTP chứa cùng một loại nội dung trong tiêu đề Accept. Xem 16.3.2.5 Producible Media Types.

Hoặc, sử dụng ResponseEntity, ví dụ:

@RequestMapping("/something") 
public ResponseEntity<String> handle() { 
    HttpHeaders responseHeaders = new HttpHeaders(); 
    responseHeaders.setContentType(new MediaType("text", "plain")); 
    return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED); 
} 

MediaType cũng có một số loại thông thường được định nghĩa là hằng số, ví dụ: MediaType.TEXT_PLAIN.

Xem 16.3.3.6 Using HttpEntity<?>

+0

dòng 'responseHeaders.setContentType ("text/plain"); 'ở trên mã cho lỗi:' setContentType (org.springframework.http.MediaType) trong org.springframework.http.HttpHeaders không thể được áp dụng cho (java.lang.String) '. SO tôi đã thử: 'responseHeaders.setContentType (new MediaType (" text/plain "));' Nhưng nó cho lỗi: 'java.lang.IllegalArgumentException: Ký tự token không hợp lệ '/' in token" text/plain "'. Bất kì lời đề nghị nào? –

+0

@brightness: Tệ của tôi. Xem câu trả lời đã chỉnh sửa. – skaffman

+0

skaffman: Tôi đã chạy mã đã chỉnh sửa của bạn, nó hiện đang đưa ra lỗi: 'java.lang.NoSuchMethodError: org.springframework.http.HttpHeaders.readOnlyHttpHeaders (Lorg/springframework/http/HttpHeaders;) Lorg/springframework/http/HttpHeaders; \t org.springframework.http.HttpEntity. (HttpEntity.java:100) \t org.springframework.http.HttpEntity. (HttpEntity.java:70) \t org.springframework.http.HttpEntity. (HttpEntity.java:58) '. –

Các vấn đề liên quan