如何使用 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();
}
备注:
我 运行 我的应用程序使用 Jersey
returnHTML内容是text/plain
(在chrome浏览器中使用开发工具检查)
我目前的解决方案是在MustacheFileName
中设置:
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
...
</head>
那么,有没有一种优雅的方法可以代替在 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();
}
我正在使用 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();
}
备注:
我 运行 我的应用程序使用 Jersey
returnHTML内容是
text/plain
(在chrome浏览器中使用开发工具检查)我目前的解决方案是在
MustacheFileName
中设置:<head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> ... </head>
那么,有没有一种优雅的方法可以代替在 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();
}