java - 执行 FreeMarker 时,以下已评估为 null 或缺失
问题描述
我正在使用 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]
----
解决方案
你的课程必须是公开的。请参阅文档。
public class User {
String firstname;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
}
推荐阅读
- reactjs - React-native 和 Redux 设置状态和渲染
- python - 3列的嵌套字典,其中一列通过顶级字典键重复类别
- javascript - 连接的音频文件未按预期播放
- c# - Xamarin.Forms 图像源绑定到字符串 (MVVM)
- mongodb - 在 M1 mac 上安装 mongodb
- javascript - Electron - 未使用 GPU 且应用程序中的帧速率较低
- nginx - 在 NGINX 旁边安装 XMPP 服务器(如 Prosody)
- mysql - 获取cursor.close()UnboundLocalError:调用/api/view/addmin时在赋值错误之前引用局部变量'cursor'
- php - PHP Mailer:从 html 文件发送时 XLSX 文件损坏
- java - 如何在方法中将类对象作为参数传递?