webdevqa.jp.net

Spring MVC 3 Return Content-Type:text / plain

ページに簡単なテキストを表示したいので、Content-Typetext/plainとして返したいです。

以下のコードを使用すると、ページにプレーンテキストが表示されますが、戻り値Content-Typeは依然としてtext/htmlです。

どうすれば修正できますか?

注:Spring MVCでTilesを使用しています。返される「m.health」は、以下の1行のみを含むhealth.jspにマップされるタイルdefを指します。

更新メモ:HTTPヘッダーリクエストのContent-TypeまたはAccept値を制御できません。どんな種類のリクエストが来ても、応答が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:

$ {status}

20
Ali

メソッドに@ResponseBodyを追加して注釈を付けると機能するはずです。

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

@RequestMappingアノテーションを使用してtext/plainアノテーションのproduces値を設定してみてください。 Springのドキュメントには、これが sample としてリストされています。

9
Udo Held