不知道大家與沒有遇到類似的問題
以下分類討論:
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)
在此提出只是做一個反面教材,希望大家能在以後的開發中注意,不要犯和我一樣的錯誤