2016-08-24 10 views
0

Mustache.javaを使用していて、HTMLヘッダーを設定する簡単な方法が見つかりませんでした。たとえば、content="text/htmlと設定したいと思います。Mustacheを使用してHTMLヘッダーを設定する方法

口ひげファイルをレンダリングするための

私のJavaコードは次のとおりです。

@Path("/home") 
@GET 
public static String getIndexPage(){ 
     MustacheFactory mf = new DefaultMustacheFactory(); 
     Mustache mustache = mf.compile(MustacheFileName); 
     StringWriter b = new StringWriter(); 
     try { 
      mustache.execute(b, new MustacheObject()).flush(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return b.toString(); 
} 

注:

  • 私は帰りのHTMLコンテンツがあるJersey

  • を使用して自分のアプリケーションを実行していますよtext/plain(Chromeブラウザの開発ツールを使用して確認済み)

  • 私の現在のソリューションはMustacheFileNameに設定することです:

    <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> ... </head>

ので、それを行う代わりに、HTMLテンプレートファイルに手動で設定するエレガントな方法はありますか?

答えて

1

私は、このためのエレガントな解決策を見つけましたGET製造方法MediaType.TEXT_HTML

@Path("/home") 
@GET 
@Produces(MediaType.TEXT_HTML) 
public static String getIndexPage(){ 
     MustacheFactory mf = new DefaultMustacheFactory(); 
     Mustache mustache = mf.compile(MustacheFileName); 
     StringWriter b = new StringWriter(); 
     try { 
      mustache.execute(b, new MustacheObject()).flush(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return b.toString(); 
} 
2

あなたの質問はむしろ口髭に無関係です。それにも関わらず、通常のジャージーRESTアプリケーションの仕組みを使って、あなたはの線に沿って、代わりに、単純な文字列のResponseオブジェクトを返すに切り替えたい:

定義:

import javax.ws.rs.core.Response; 

@Path("/home") 
@GET 
public static Response getIndexPage(){ 
    MustacheFactory mf = new DefaultMustacheFactory(); 
    Mustache mustache = mf.compile(MustacheFileName); 
    StringWriter b = new StringWriter(); 
    try { 
     mustache.execute(b, new MustacheObject()).flush(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return Response.ok() 
     .entity(b.toString()) 
     .header("whatever-header-you-need", "... its value") 
     .build(); 
} 
+0

ありがとう! あなたは私の答えを見てみたいと思うかもしれません、私はちょうど別の優雅な解決策を考え出しました。 –

+0

はい、確かに。あなたが必要としていた具体的なヘッダーには注意を払わなかった。あなたの場合、@Producesは最善の方法です。上記の答えは、注釈を直接サポートしていない一般的なケースについては、書籍に記載してください。 – mtj

関連する問題