c:forEach返回String而不是Object

Dav*_*vid 3 java jsp jstl

我有一个请求范围Struts 1 Action,其中包含我的应用程序中的自定义POJO对象列表.在动作中,我使用request.setAttribute("myForm",myForm)来设置表单值.当我到达JSP页面时,我尝试使用ac:forEach循环迭代列表中的元素并打印出每个元素的属性.但是,c:forEach循环始终抛出以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

我的ActionForm有以下实体:

private List<MyCustomObjects> myList;
public List<MyCustomObjects> getMyList() { return myList; }
public void setMyList(List<MyCustomObjects> myList) { this.myList = myList; }
Run Code Online (Sandbox Code Playgroud)

在JSP页面中,我有以下循环:

<c:forEach var="listObject" items="myForm.myList">
    <c:out value="${listObject.name}" />
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

有谁看到我做错了什么或为什么这不起作用?谢谢!

Bal*_*usC 5

你需要包装表达式${}.

<c:forEach var="listObject" items="${myForm.myList}">
    <c:out value="${listObject.name}" />
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

否则它确实被视为一个String,即具有字面值的一个"myForm.myList".