如何使用Mustache设置HTML标头

时间:2016-08-24 07:30:52

标签: java html jersey mustache

我使用Mustache.java并且找不到设置HTML标头的简单方法。我想设置content="text/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();
}

备注:

  • 我正在使用Jersey

  • 运行我的应用程序
  • 返回HTML内容为text/plain(在Chrome浏览器中使用开发工具检查)

  • 我目前的解决方案是设置MustacheFileName

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

那么,有没有一种优雅的方法来代替在HTML模板文件中手动设置呢?

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:1)

我找到了一个优雅的解决方案:

定义生成GET的{​​{1}}方法:

MediaType.TEXT_HTML