0

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

2 回答 2

0

好的,问题解决了!

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

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

感谢收听:)

于 2011-11-28T23:13:40.613 回答
0

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

于 2011-11-26T15:39:38.570 回答