2012-01-21 15 views
15

Chcę wyświetlić prosty tekst na stronie i jako taki chcę zwrócić Content-Type jako text/plain.Spring MVC 3 Return Content-Type: text/plain

Używając poniższego kodu, widzę zwykły tekst na stronie, jednak zwrot Content-Type nadal jest text/html.

Jak mogę to naprawić?

UWAGA: Używam płytek ze sprężyną MVC. Zwrócona "m.health" wskazuje na defekt kafli, który odwzorowuje plik health.jsp, który zawiera tylko 1 linię poniżej.

UWAGA UPDATE: I nie mają kontroli nad wartościami w żądaniu HTTP Header Content-Type lub Accept. Chcę moja odpowiedź na powrót text/plain bez względu na to, jakiego rodzaju żądanie przychodzi

Controller.

@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:

$ {stan}

Odpowiedz

7

można spróbować aby ustawić wartość produces swojej adnotacji @RequestMapping za pomocą text/plain. Dokumentacja Spring podaje to jako sample.

+1

mam żadnej kontroli nad tym, co 'Content-Type' znajduje się w' request' i produkuje nie będzie pasował jeśli rodzaju żądanie nie jest tym, co w nim umieszczam. Zasadniczo chcę zwrócić 'text/plain' bez względu na rodzaj żądania. – Ali

46

To powinno działać, jeśli opisywanie metodę dodatkowo @ResponseBody:

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

Dla każdego, kto odwiedził to pytanie, Markus dodał swoją odpowiedź po zaakceptowaniu przez Alego, ale jest to poprawne podejście przy korzystaniu z adnotacji. Jest prosty i działa dobrze. –

+0

To powinno być zaakceptowane jako poprawna odpowiedź. –

+8

To nie działa. Jeśli użyjesz @ResponseBody, Spring przepisuje typ zawartości przez "application/json" –

Powiązane problemy