今天碰到一個關於在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方法)