2011-04-04 93 views
3

我有一個請求作用域Struts 1 Action包含我的應用程序中的自定義POJO對象列表。在動作內部,我使用request.setAttribute(「myForm」,myForm)來設置表單值。當我到達JSP頁面時,我嘗試使用c:forEach循環遍歷列表中的元素並打印出每個元素的屬性。然而,C:forEach循環總是會引發以下錯誤:c:forEach返回String而不是Object

javax.servlet.jsp.JspException: An error occurred while evaluating custom action attribute "value" with value "${listObject.name}": Unable to find a value for "name" in object of class "java.lang.String" using operator "." (null) 

我的ActionForm有以下實體:

private List<MyCustomObjects> myList; 
public List<MyCustomObjects> getMyList() { return myList; } 
public void setMyList(List<MyCustomObjects> myList) { this.myList = myList; } 

在JSP頁面中,我有以下循環:

<c:forEach var="listObject" items="myForm.myList"> 
    <c:out value="${listObject.name}" /> 
</c:forEach> 

有沒有人看到我做錯了什麼或爲什麼這不起作用?謝謝!

回答

5

您需要將表達式包裝在${}中。

<c:forEach var="listObject" items="${myForm.myList}"> 
    <c:out value="${listObject.name}" /> 
</c:forEach> 

否則它確實視爲String,即用一個字面值"myForm.myList"

+0

非常感謝你張貼這個。添加$ {}解決了我的問題。 – David 2011-04-04 22:08:45

+0

@ javanna:只有15分鐘後纔有可能(我已經打算在30分鐘後發佈「不客氣」的評論;))。 – BalusC 2011-04-04 22:18:33

+0

今天我很不耐煩...... :-) – javanna 2011-04-04 22:22:32

相關問題