javax.el.PropertyNotFoundExceptionProperty 'Tid' not found on type com.msz.sims.domain.Teacher

不知道大家與沒有遇到類似的問題

以下分類討論:

Teacher:

public class Teacher {

private int Tid;//注意到Tid的第一個字母是大寫,這裏是關鍵哦

省略getters和setters。。。

}

Action:

public String execute() {
Map request = (Map)ActionContext.getContext().get("request");
request.put("teacherInfo",TService.listAll(Teacher.class));
return "success";
}

//註釋TService.listAll(Teacher.class)的返回值是一個List,裏面存放的是若干Teacher對象

jsp:ognl & jstl

<s:iterator value="#request.teacherInfo" id="teacher">
<tr>
<td>
<s:property value="#teacher.Tid" />
</td>

</tr>

</s:iterator>

<c:forEach var="ts" items="${request.teacherInfo}">
${ts.tid}
</c:forEach>

注意到區別沒有?我們可以看到,ognl解析時,對Teacher類的Tid屬性保存了原有的大小寫規範,而jstl的解析方式就大不相同了,相信大家也注意到了

jstl會將Tid全轉換爲小寫,所以必須用ts.tid而不是ts.Tid

從javabean的設計角度來說根據 JavaBeans 規範,屬性的前兩個字母不能是一大一小,或者是一小一大。前兩個字母只能全是小寫,

或者全是大寫字母(具體可見:http://blog.csdn.net/yunye114105/article/details/7364264)

在此提出只是做一個反面教材,希望大家能在以後的開發中注意,不要犯和我一樣的錯誤大笑


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章