执行 FreeMarker 时,以下已评估为 null 或缺失
The following has evaluated to null or missing when executing FreeMarker
我正在使用 FreeMarker(一个基于 Java 的免费模板引擎,最初专注于使用 MVC 软件架构生成动态网页)来生成一些 HTML 页面
我有一个带有这段代码的 freemarker 模板:
Dear ${user.firstname} ${user.surname},</h3>
我已经创建了这段代码来测试它:
public static void main(String[] args) throws IOException, TemplateException {
class User {
String firstname;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
}
String templateName = "tdk_reminder_ext_body.ftl";
final Map<String, Object> finalModel = new HashMap<>();
User user = new User();
user.setFirstname("firstname");
finalModel.put("serverName", "local");
finalModel.put("user", user);
Configuration cfg = new Configuration(Configuration.getVersion());
cfg.setDirectoryForTemplateLoading(new File("C:/Work/eclipse-tdk/templates/engine/"));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
final freemarker.template.Template freemarkerTemplate = cfg.getTemplate(templateName);
System.out.println (FreeMarkerTemplateUtils.processTemplateIntoString(freemarkerTemplate, finalModel));
}
但是当我 运行 程序时我得到了这个错误:
FTL stack trace ("~" means nesting-related):
- Failed at: ${user.firstname} [in template "tdk_reminder_ext_body.ftl" at line 34, column 38]
----
您的 class 必须是 public。 See the documentation.
public class User {
String firstname;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
}
我正在使用 FreeMarker(一个基于 Java 的免费模板引擎,最初专注于使用 MVC 软件架构生成动态网页)来生成一些 HTML 页面 我有一个带有这段代码的 freemarker 模板:
Dear ${user.firstname} ${user.surname},</h3>
我已经创建了这段代码来测试它:
public static void main(String[] args) throws IOException, TemplateException {
class User {
String firstname;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
}
String templateName = "tdk_reminder_ext_body.ftl";
final Map<String, Object> finalModel = new HashMap<>();
User user = new User();
user.setFirstname("firstname");
finalModel.put("serverName", "local");
finalModel.put("user", user);
Configuration cfg = new Configuration(Configuration.getVersion());
cfg.setDirectoryForTemplateLoading(new File("C:/Work/eclipse-tdk/templates/engine/"));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
final freemarker.template.Template freemarkerTemplate = cfg.getTemplate(templateName);
System.out.println (FreeMarkerTemplateUtils.processTemplateIntoString(freemarkerTemplate, finalModel));
}
但是当我 运行 程序时我得到了这个错误:
FTL stack trace ("~" means nesting-related):
- Failed at: ${user.firstname} [in template "tdk_reminder_ext_body.ftl" at line 34, column 38]
----
您的 class 必须是 public。 See the documentation.
public class User {
String firstname;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
}