我使用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 ...
- 在FreeMarker中使用骆驼大小写变量名是否存在已知问题?
- 这可能是一个问题与这个特定版本的FreeMarker?
- 是否有一个配置来控制它?
- 我访问这些变量的方式是否还有其他问题?
您的代码应该可以工作。当然nameFirst
是null
,因此就FreeMarker而言,它被认为是缺失的。
好了,问题解决了!
我们从JSON代码填充记录,这意味着JSON试图根据JSON表示法(大写,小写等)定义属性的方式使用setter。由于setter名称不符合JSON名称(即setNameFirst作为setter名称而不是JSON中的name_first),对象未初始化,FreeMarker发出错误。
我在getter中设置了一个硬编码值,以消除对象为null的选项,当我没有看到任何错误时-它让我找到解决方案。
谢谢大家的聆听