关于EL表达式大小写问题

转自:http://blog.sina.com.cn/s/blog_65b6eaa30100pm81.html


我在学习struts的时候遇到了一些问题.可笑的是:所遇到的问题并不是struts技术本身,而是来自el表达式的一些挑战.其中最令人困惑的是EL的大小写问题.

可以肯定的一点是:即便在类中没有定义属性,只要有getter方法,el表达式就起作用.

但问题是如果用EL表达式, 类中的属性也许没有定义,这时使用${class.propertyName}输出结果.这里的带有下划线的P该大写还是小写呢?

以下是实例:

private String name="xlx";
    public String getName(){
        return name;
    }
    public String getPassword(){
        return "password";
    }
    public String getABook(){
        return "Thinking in Java";
    }
    public String getABC(){
        return "ABC";
    }


${requestScope.page.name}

${requestScope.page.password}

${requestScope.page.ABook}--------小写a并不能正确显示

${requestScope.page.ABC}

第二和第三个都没有定义属性,只有getter方法.二是可以和有属性的一name一样输出的,但三不可以.当三的ABook首字母大写时.显示正确.由此可见,单个单词可以像有属性的字段一样输出,当getter方法出现两个紧紧相连的大写字母时,首字母要大写.但如果出现两个或两个以上大写字母而他们并不相连呢?以下是实例:

public String getUserAddress(){
    return "user address";
}


${requestScope.page.userAddress}

居然可以和有属性的一样使用!

private String aBCD="a--B--C";
public String getABCD(){
    return aBCD;
}


${requestScope.page.aBCD}

上述表达式不能显示.当把ABCD时可以正确显示.  由此可见,属性的有无与EL是没有关系的,EL只关系类中是否有getter方法,当有相连的两个大写字母时,EL的输出应该采取和getter方法get后一致的大小写规则.

总之,在经过实践后,EL表达式需要注意的使用只有一条:当get方法后的字符如果前两个都是大写时,EL表达式需要大写.除此之外均为小写.

你可能感兴趣的:(框架)