无法使用 FreeMarker 访问混合(驼峰)大小写 Java 变量名称



我使用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. 我访问这些变量的方式是否还有其他问题?

您的代码应该可以工作。当然nameFirstnull,因此就FreeMarker而言,它被认为是缺失的。

好了,问题解决了!

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

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

谢谢大家的聆听

最新更新