Spring MVC 3 Return Content-Type: текст / обычный - PullRequest
18 голосов
/ 21 января 2012

Я хочу отобразить простой текст на странице и поэтому хочу вернуть Content-Type как text/plain.

Используя код ниже, я вижу простой текст на странице, однако возвращаемое значение Content-Type по-прежнему text/html.

Как я могу это исправить?

ПРИМЕЧАНИЕ: я использую Tiles с Spring MVC. Возвращаемое значение «m.health» указывает на значение тайла, которое отображается на health.jsp, который содержит только 1 строку ниже.

ПРИМЕЧАНИЕ ОБНОВЛЕНИЯ : У меня нет контроля над значениями Content-Type или Accept в запросе заголовка HTTP. Я хочу, чтобы мой ответ возвращался text/plain независимо от того, какой запрос поступил.

Контроллер:

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

$ {состояние}

Ответы [ 2 ]

50 голосов
/ 15 марта 2012

Должно работать, если вы аннотируете свой метод с помощью @ResponseBody:

@RequestMapping(value = "/",
                method = RequestMethod.GET)
@ResponseBody
public String plaintext(HttpServletResponse response) {
    response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");
    return "TEXT";
}
9 голосов
/ 21 января 2012

Вы можете попытаться установить значение produces вашей аннотации @RequestMapping с помощью text/plain.Документация Spring перечисляет это как образец .

...