怎么用EL表达式调方法
2015-11-25
在JSP页面用EL表达式调用方法的话,一般情况下是调用的getXxx()方法或者isXxx()方法
是为了获取属性值,举个例子吧
例如你写了个类叫做User,然后定义了name属性.
public class User{
private String name = "小明";
// 一般我们还会写 get 和 set方法.
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPasword() {
return "mima123";
}
}
那么如果我在index.jsp这个jsp页面中用EL表达式获取name的话,就可以通过用
${name }来获取,之所以可以这样调用是因为我们写了public String getName() {}这个方法
${name } EL表达式会自动的把name的首字母n转成大写变成Name,然后加上get,也就是拼接成getName()这个方法
然后他去User类中找这个方法,找到了就执行这个方法获取返回值,EL表达式就是这样获取到javabean的属性值的.
有必要说明的是,这个${name } EL表达式里面的name不是我们在User类中定义的这个name属性.
private String name = "小明";
而是 public String getName()这个方法方法名去掉get这三个字母然后把N变成小写之后的字符串,也就是name.
意思就是说,就算我们在User类中没有定义 private String name = "小明"; 这个name属性.
而直接写成
public String getName() {
return "小明";
}
EL表达式也会获取到这个方法的返回值.
我们一般说用EL获取某某对象的属性,其实就是那个对象的属性,有一个对应get方法,而在这个get方法里面用return 返回了那个属性值,所以才可以获取到.
再然后就是我再上面代码里有一个getPassword()方法,但是没有定义password这个属性,这样子做是为了证明只要有get方法,EL表达式在页面中就可以获取到.只要你把getPassword的get去掉,然后把Password的P换成小写p,变成password再jsp页面也是可以通过${password }获取getPassword()这个方法的返回值的.
还有一种情况,上面我说 可以调用getXxx()和isXxx()的方法并获取到他们的返回值,
其实很多人都不知道,EL表达式默认还会调用 is开头的isXxx()方法,不信?去写一个测试就知道了!
关于楼主问的怎么用EL调用方法,其实也是可以调用方法的,只不过调用除getXxx()和isXxx()之外的方法比较麻烦,而且只能调用静态方法.
具体可以参考 http://www.cnblogs.com/xdp-gacl/p/3938361.html
想调用任意方法,只能自己写标签库。
能举个例子吗?怎么个调用get、set法,我不会?还什么静态的?
public static getDate(而且还必须有参数吗?){}
调用的时候是这样写的-----------> ${foo.bar(baz)} (这是什么意思嘛),那方法名getDate()写在哪儿呢?都不懂嘛!