我有以下方法在模板上呈现用户列表,但在 IntelliJ 中启动 Spark 时出现 500 内部错误。
private void renderTemplate() throws IOException, TemplateException {
List<String> users = new ArrayList<>();
users.add("John Doe");
users.add("Tony Doe");
get("/admin", (request, response) -> {
return new ModelAndView(users, "spark/template/freemarker/admin_template.ftl");
}, new FreeMarkerEngine());
}
我的admin_template.ftl的内容是:
<html>
<head>
<title>Administration</title>
</head>
<body>
<h1>My Admin</h1>
<#list users as user>
<h2>$user</h2>
</#list>
</body>
</html>
有谁知道如何在 freemarker 模板上呈现列表?谢谢回复!
最佳答案
渲染列表变化
<#list users as user>
<h2>$user</h2>
</#list>
到
<#list users as user>
<h2>${user}</h2>
</#list>
在 admin_template.ftl
中修改 renderTemplate
如下:
private void renderTemplate() throws IOException, TemplateException {
List<String> users = new ArrayList<>();
users.add("John Doe");
users.add("Tony Doe");
Map<String, Object> attributes = new HashMap<>();
attributes.put("users", users);
get("/admin", (request, response) -> {
return new ModelAndView(attributes, "spark/template/freemarker/admin_template.ftl");
}, new FreeMarkerEngine());
}
如果这不能解决问题,则 FreeMarkerEngine
可能有一个单独的问题导致错误消息“500 Internal Error”,即您的 FreeMarkerEngine
对象在运行时找不到模板文件 admin_template.ftl
。查看 FileNotFoundException when loading freemarker template in java 的答案有关如何处理该问题的详细信息。
关于java - 从 Spark Web 框架在 Freemarker 模板上呈现列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23667199/