如何使用 Mustache 设置 HTML header

How to set HTML header using Mustache

我正在使用 Mustache.java,但我没有找到设置 HTML header 的简单方法。例如,我想设置 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();
}

备注:

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

你的问题似乎与小胡子无关。然而,使用普通的 jersey 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();
}

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

定义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();
}