读取导致Freemarker模板引擎中TemplateException的Java对象
我正在编写一个Java实用程序,使用freemarker模板生成输出文件。我有一个使用freemarker写入文件的对象列表。例如,我的java对象是一个有fName、lName和age的雇员。我使用以下代码段生成输出文件:读取导致Freemarker模板引擎中TemplateException的Java对象,java,freemarker,Java,Freemarker,我正在编写一个Java实用程序,使用freemarker模板生成输出文件。我有一个使用freemarker写入文件的对象列表。例如,我的java对象是一个有fName、lName和age的雇员。我使用以下代码段生成输出文件: <#list employees as e> Fname: ${e.fName} Lname: ${e.lName} Age: ${e.age} </#list> 我想读取在FreemarkerExceptionHandler类中引发异常的empl
<#list employees as e>
Fname: ${e.fName} Lname: ${e.lName} Age: ${e.age}
</#list>
我想读取在FreemarkerExceptionHandler类中引发异常的employee对象,但无法读取它。我使用以下代码来读取员工列表,但我得到的是所有员工,而不是导致此错误的特定员工
TemplateHashModel templateHashModel = environment.getDataModel();
TemplateModel templateModel = templateHashModel.get("employees");
List<Employee> emps = simpleSequence.toList();
TemplateHashModel TemplateHashModel=environment.getDataModel();
TemplateModel TemplateModel=templateHashModel.get(“员工”);
List emps=simpleSequence.toList();
任何人都可以确认在freemarker中捕获导致异常的对象是否可行。据我所知,没有简单的方法可以做到这一点。我的想法是扩展
DefaultObjectWrapper
(假设您正在使用它-请参阅Configuration.getObjectWrapper
),因此当通过TemplateHashModel.get(String)
获取子变量(如fNameo
)时,您可以捕获super.get(String)引发的任何异常
在重写TemplateHashModel.get
时,抛出自己的TemplateException
子类实例,将父对象放入为此添加的字段中。(而且您可能希望添加原始异常作为异常的原因异常。)据我所知,没有简单的方法可以做到这一点。我的想法是扩展DefaultObjectWrapper
(假设您正在使用它-请参阅Configuration.getObjectWrapper
),因此当通过TemplateHashModel.get(String)
获取子变量(如fNameo
)时,您可以捕获super.get(String)引发的任何异常
在重写TemplateHashModel.get
时,抛出自己的TemplateException
子类实例,将父对象放入为此添加的字段中。(您可能还希望添加原始异常作为异常的原因异常。)
TemplateHashModel templateHashModel = environment.getDataModel();
TemplateModel templateModel = templateHashModel.get("employees");
List<Employee> emps = simpleSequence.toList();