我是Spring MVC和Velocity Templates的新手,但是我将它们用于一个项目并且有一些问题。基本上,我使用一些遗留代码作为我的模板,但遗留代码中的语法对我不起作用,我不知道为什么。我们的团队有一个名为AdminData的公共类,它看起来像:
public class AdminData {
private long property1;
public void setProperty1 (long property1) {
this.property1 = property1;
}
public long getProperty1() {
return property1;
}
和Java代码看起来像这样:
ModelAndView model = new ModelAndView("view");
AdminData data = new AdminData();
... // set some properties of data
model.addObject("data", data);
return model;
然后在我们的Velocity模板中,我们引用数据对象的属性,如下所示:
${data.property1}
并在页面上正确显示该值。然后我们有另一个名为AdminFeatures的类,它看起来像:
public class AdminFeatures {
private boolean property2;
public void setProperty2(boolean property2) {
this.property2 = property2;
}
public boolean getProperty2() {
return property2;
}
与我们用于AdminData的模型和视图基本相同的Java代码。我遇到的问题是,当我尝试以相同的方式引用AdminFeatures中的property2时:
${data.property2}
我无法打印出变量的值。但是,如果我使用语法:
$data.getProperty2() // ... or ${data.getProperty2()}
然后我可以打印属性的值。这是否与Java中布尔值与布尔值之间的差异有关?或者property1是一个很长的属性property2是一个布尔值?
谢谢。
答案 0 :(得分:0)
是因为property2
是一个布尔值。布尔类型的getter / setter的标准方法约定是 isProperty 和setProperty。
所以你的AdminFeatures类应该是:
public class AdminFeatures { private boolean property2;
public void setProperty2(boolean property2) {
this.property2 = property2;
}
public boolean isProperty2() {
return property2;
}