今天碰到一个关于在jsp取javaBean属性的错误,特意做个笔记。
首先说一下错误:
首先我们定义一个bean:
package com.xtl.demo;
public class User {
private String userName;
private int age;
private boolean isAdult;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isAdult() {
return isAdult;
}
public void setAdult(boolean isAdult) {
this.isAdult = isAdult;
}
}
简单的user对象,存放姓名,年龄,是否成年。。
通过情况下我们在controller里通过model.addAttribute("user", User);的形式传递给view。
而我们的view(jsp)也可以直接通过EL表达式${user.userName} ${user.age} ${user.isAdult} 分别获取我们要的属性。
这一切看起来都是对的,对象点属性啊,很正常的。。。。再此之前我也觉得是对的 。
其实,这里有一个错就是${user.isAdult}。。。。。/
其实我们真的获取属性是通过对象点属性拿到么? 其实看起来是这样,然而并不是的。。。
我们获取用户名${user.userName} ,看去来是User.userName。。。实际上是去拿User对象里面的getUserName这个方法,所谓User点的那个属性,不过就是getUserName方法去掉get,然后N小写。。。。才出现了了User.userName能拿到用户名这样的语法。真正的应该是在jsp中${User.getUserName,}拿到用户名属性。
同理,关于${user.isAdult}这个错误,正确的写法应该是 ${user.adult}..去掉is,A小写。。。
(boolean属性没有get方法,是is方法)