2012-01-21 28 views
15

Tôi muốn hiển thị văn bản đơn giản trên một trang và vì vậy tôi muốn trả lại Content-Typetext/plain.Spring MVC 3 Return Content-Type: text/plain

Sử dụng mã bên dưới, tôi thấy văn bản thuần tuý trên trang, tuy nhiên, trả lại Content-Type vẫn là text/html.

Làm cách nào để khắc phục sự cố này?

LƯU Ý: Tôi đang sử dụng Gạch với Spring MVC. Các điểm "m.health" được trả lại thành một gạch def để ánh xạ tới một tệp tin health.jsp chỉ chứa 1 dòng bên dưới.

CẬP NHẬT LƯU Ý: Tôi không kiểm soát được các giá trị Content-Type hoặc Accept trong yêu cầu Tiêu đề HTTP. Tôi muốn câu trả lời của tôi để trở text/plain không có vấn đề gì loại yêu cầu đến trong

Bộ điều khiển:.

@RequestMapping(value = "/m/health", method = RequestMethod.GET, headers = "Accept=*") 
public String runHealthCheck(HttpServletResponse response, HttpServletRequest request, Model model) throws Exception { 
    model = executeCheck(request, response, TEMPLATE, false, model); 
    model.addAttribute("accept", "text/plain"); 
    response.setContentType("text/plain"); 
    response.setCharacterEncoding("UTF-8"); 
    return "m.health"; 
} 

JSP:

$ {status}

Trả lời

7

Bạn có thể thử để đặt giá trị produces của chú thích @RequestMapping của bạn với text/plain. Tài liệu Spring liệt kê đây là sample.

+1

tôi không kiểm soát được những gì 'Content-Type' được thiết lập trong' request' và tạo ra sẽ không phù hợp nếu loại yêu cầu không phải là những gì tôi đặt trong đó. Về cơ bản tôi muốn trả về 'text/plain' cho dù kiểu yêu cầu là gì. – Ali

46

Nó sẽ làm việc nếu bạn chú thích phương pháp của bạn thêm với @ResponseBody:

@RequestMapping(value = "/", 
       method = RequestMethod.GET) 
@ResponseBody 
public String plaintext(HttpServletResponse response) { 
    response.setContentType("text/plain"); 
    response.setCharacterEncoding("UTF-8"); 
    return "TEXT"; 
} 
+6

Đối với bất kỳ ai truy cập câu hỏi này, Markus đã thêm câu trả lời của mình sau khi Ali chấp nhận, nhưng đây là cách tiếp cận chính xác khi sử dụng chú thích. Nó rất đơn giản và hoạt động tốt. –

+0

Điều này sẽ được chấp nhận làm câu trả lời đúng. –

+8

Nó không hoạt động. Nếu bạn sử dụng @ResponseBody, Spring sẽ viết lại Loại nội dung theo "application/json" –