首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Struts2 標簽無法獲取 List 中對象屬性:必須使用迭代標簽遍歷

     編輯:程式設計綜合問答

問題現象

<s:property value="list"/>  // 能輸出對象 toString()
<s:property value="list.entity.name"/>  // 無輸出

list 為 List<Entity>,后台有 getter/setter,對象也有 name 屬性及 getter。

原因分析

<s:property value="list.entity.name"/> 嘗試將 list 視為單個對象訪問其 entity 屬性,但 list 是集合,無 entity 屬性。Struts2 OGNL 表達式不會自動遍歷集合。

正確寫法:使用 <s:iterator>

<s:iterator value="list" var="item">
    <s:property value="#item.name"/>  // 或 #item.entity.name 視對象結構
</s:iterator>

或暴露給 JSP 表達式語言(EL):

<c:forEach items="${list}" var="item">
    ${item.name}
</c:forEach>

OGNL 訪問集合元素語法

  • list[0].name:訪問第一個元素。
  • list.{name}:投影,返回所有元素 name 組成的新列表。
  • list.{? #this.name == 'target'}:選擇過濾。

參考資源

Struts2 OGNL 集合操作詳解

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved