FreeMarker:如何获得私有属性的价值,而不是公共价值" get"方法

时间:2014-11-24 18:39:01

标签: field private freemarker

我试图获取私有字段(属性)的值而不使用" get"方法即使存在这种方法。

有可能吗?

我在Freemarker get-method without "get"之后创建了几个示例:

示例1:成功使用" get" "私人"的方法字段

班级:

public class MyClass {
    private String myField = "TestA";
    public String getMyField() { return "from method " + myField;   }
}

模板:测试:$ {myObject.myField}

BeansWrapper config:

bw.setExposeFields(true);
// bw.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);

输出:"测试:来自方法TestA"

示例2:成功获得" public"字段

班级:

public class MyClass {
    public String myField = "TestA";
    public String getMyField() { return "from method " + myField;   }
}

模板:测试:$ {myObject.myField}

BeansWrapper config:

bw.setExposeFields(true);
bw.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);
输出:"测试:TestA"

示例3:无法获得"私有"的价值字段

班级:

public class MyClass {
    private String myField = "TestA";
    public String getMyField() { return "from method " + myField;   }
}

模板:测试:$ {myObject.myField}

BeansWrapper config:

bw.setExposeFields(true);
bw.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);

输出:例外"以下评估为空或缺失:==> myClass.myField"

1 个答案:

答案 0 :(得分:0)

开箱即用的ObjectWrapper - s(例如BeansWrapper)都不允许阅读private成员。 OTOH您可以实现自己的ObjectWrapper或扩展现有的BeansWrapper