如何在 freemarker 中使用没有 get 和 set 的 bean?
How to use bean without get and set in freemaker?
我有一个class这样的。
public class User {
public String username;
public String age;
}
当我使用freemarker时
${user.username!}
我什么都没得到。
但是如果我像这样更改 class
public class User {
public String username;
public String age;
public String getUsername() {
return username;
}
}
我可以得到价值。
如何在freemaker中使用没有get和set的bean?
因为我有太多class没有get和set了
我尝试了 lombok,但这不是我想要的。
类 没有 getter 和 setter 不是标准的 Java bean。请参阅 the Wikipedia article on Java beans,其中指出按照惯例,属性必须可以使用 get、set、is 方法。
因此,您应该习惯在 bean 中提供这些方法 类。
默认情况下,freemarker 仅公开 JavaBean 属性和 public 方法。
但您可以配置 ObjectWrapper 以公开所有公开 public,非静态字段:
Configuration cfg = new Configuration(Configuration.VERSION_2_3_27);
DefaultObjectWrapperBuilder wrapperBuilder = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_27);
wrapperBuilder.setExposeFields(true);
cfg.setObjectWrapper(wrapperBuilder.build());
我有一个class这样的。
public class User {
public String username;
public String age;
}
当我使用freemarker时
${user.username!}
我什么都没得到。
但是如果我像这样更改 class
public class User {
public String username;
public String age;
public String getUsername() {
return username;
}
}
我可以得到价值。
如何在freemaker中使用没有get和set的bean?
因为我有太多class没有get和set了
我尝试了 lombok,但这不是我想要的。
类 没有 getter 和 setter 不是标准的 Java bean。请参阅 the Wikipedia article on Java beans,其中指出按照惯例,属性必须可以使用 get、set、is 方法。
因此,您应该习惯在 bean 中提供这些方法 类。
默认情况下,freemarker 仅公开 JavaBean 属性和 public 方法。
但您可以配置 ObjectWrapper 以公开所有公开 public,非静态字段:
Configuration cfg = new Configuration(Configuration.VERSION_2_3_27);
DefaultObjectWrapperBuilder wrapperBuilder = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_27);
wrapperBuilder.setExposeFields(true);
cfg.setObjectWrapper(wrapperBuilder.build());