无法使用FreeMarker访问混合(camel)案例Java变量名称

时间:2011-11-26 01:32:28

标签: java freemarker camelcasing

我正在使用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 ...
  1. 在FreeMarker中使用驼峰式变量名称是否存在已知问题?
  2. 这个特定版本的FreeMarker可能是个问题吗?
  3. 是否有配置来控制它?
  4. 我访问这些变量的方式是否有其他问题?

2 个答案:

答案 0 :(得分:0)

你的代码应该有效。当然nameFirstnull,因此就FreeMarker而言,它是缺失的。

答案 1 :(得分:0)

好的,问题解决了!

我们正在从JSON代码填充记录,这意味着JSON试图根据JSON表示法(大写,小写等)中定义属性的方式使用setter。 由于setter名称不符合JSON名称(即setNameFirst作为JSON中的setter名称与name_first),因此对象未初始化且FreeMarker发出错误。

我在getter中设置了一个硬编码值来消除对象为null的选项,当我没有看到任何错误时 - 它让我解决了。

感谢收听:)