2012-01-21 4 views
15

単純なテキストをページに表示したいので、Content-Typetext/plainとして返したいと思います。Spring MVC 3返されるコンテンツタイプ:text/plain

次のコードを使用すると、ページにプレーンテキストが表示されますが、返信Content-Typeはまだtext/htmlです。

どうすればこの問題を解決できますか?

注:Spring MVCでタイルを使用しています。返された "m.health"は、下の1行しか含まないhealth.jspにマップされるタイルのdefを指します。

UPDATE注:私は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:

$ {状態}

答えて

7

あなたが試みることができます@RequestMapping注釈のproducesの値をtext/plainに設定してください。 Springのドキュメントでは、これをsampleと記載しています。

+1

私はコンテンツ-type'がが 'request'に設定されているものを'を制御することはできませんし、要求タイプならば一致しません生成私が設定したものではありません。私は基本的に、要求の種類が何であっても 'text/plain'を返すことを望んでいます。 – Ali

46

あなたは@ResponseBodyにさらにあなたの方法に注釈を付ける場合、それは動作するはずです:

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

この質問に訪れる人は、Aliが受け入れた後にMarkusが返信を追加しましたが、これは注釈を使用するときの正しいアプローチです。それは簡単で、うまくいきます。 –

+0

これは正しい答えとして受け入れられるべきです。 –

+8

動作しません。 @ResponseBodyを使用すると、Springは "Application/json"でコンテンツタイプを書き換えます –

関連する問題