velocity模板变量和方法为什么这个语法有效而那个语法无效?

zfycwa2u  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(307)

我对springmvc和velocity模板还不熟悉,但是我正在一个项目中使用它们,并且有一些问题。基本上,我使用一些遗留代码作为模板,但是遗留代码中的语法对我不起作用,我也不知道为什么。我们的团队有一个名为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;

然后在我们的速度模板中,我们引用数据对象的属性,如下所示:

${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中布尔和布尔的区别有关吗?或者属性1是一个很长的值,而属性2是一个布尔值?
谢谢您。

nxagd54h

nxagd54h1#

是因为 property2 是布尔值。布尔类型的getter/setter的标准方法约定的形式是isproperty和setproperty。
所以你的adminfeatures类应该是:
公共类{私有布尔属性2;

public void setProperty2(boolean property2) { 
            this.property2 = property2; 
    } 

    public boolean isProperty2() { 
            return property2; 
    }

相关问题