读取导致Freemarker模板引擎中TemplateException的Java对象

读取导致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

我正在编写一个Java实用程序,使用freemarker模板生成输出文件。我有一个使用freemarker写入文件的对象列表。例如,我的java对象是一个有fName、lName和age的雇员。我使用以下代码段生成输出文件:

<#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();