我正在使用FreeMarker(2.3.18)来访问自定义类中的Java变量。当变量名称具有混合大小写(驼峰大小写)时,我收到一条错误消息,指出该变量不存在。
这是我班级的片段:
public class Student{
private String name_last, nameFirst;
public String getName_last(){
return name_last;
}
public String getNameFirst(){
return nameFirst;
}
}
在我的FreeMarker模板中,${passedInStudent.name_last}
成功返回值,但${passedInStudent.nameFirst}
- 返回错误
freemarker.core.InvalidReferenceException: Expression
passedInStudent.nameFirst is undefined on line ...
答案 0 :(得分:0)
你的代码应该有效。当然nameFirst
是null
,因此就FreeMarker而言,它是缺失的。
答案 1 :(得分:0)
好的,问题解决了!
我们正在从JSON代码填充记录,这意味着JSON试图根据JSON表示法(大写,小写等)中定义属性的方式使用setter。 由于setter名称不符合JSON名称(即setNameFirst作为JSON中的setter名称与name_first),因此对象未初始化且FreeMarker发出错误。
我在getter中设置了一个硬编码值来消除对象为null的选项,当我没有看到任何错误时 - 它让我解决了。
感谢收听:)