天天看點

關于el表達式foreach找不到對象屬性的問題

java報錯--Property 'xxx' not found on type 包名.類名

<c:forEach items="${requestScope.customers}" var="cust">
	<tr>
		<c:out value="${cust.name}"></c:out>
	</tr>
</c:forEach>
           

發現找不到cust裡的屬性

Property [Name] not found on type [com.zrj.domain.Customer]
           

意思就是找不到Customer裡的Name屬性

網上找一些答案,java報錯–Property ‘xxx’ not found on type 包名.類名

說是類裡的get方法大小寫有問題我全部删除重新快捷鍵建立然而還是不行,在折騰了一段時間後檢視了el中對擷取對象屬性的解釋:

以表達式${book.isbn}為例

EL表達式會根據isbn去Book類裡尋找這個isbn的get方法,此時會自動把isbn首字母大寫并加上get字首,一旦找到與之比對的方法,El表達式就會認為這就是要通路的屬性,并傳回屬性的值。

可是我的Name已經是大寫了啊( ・´ω`・ )

于是試了下改成小寫的name

然後就可以了(╯°Д°)╯︵┻━┻

注意哦我這裡對象屬性名依然是Name,el中寫Cust.Name是不可以的,隻有寫小寫的name才可以.不清楚是什麼原因.

不管是為什麼,還是建議大家要按照命名規範把對象名首字母改為小寫的,避免這樣無厘頭的麻煩呢(≖ᴗ≖)✧