java - c :forEach returning String instead of Object

标签 java jsp jstl

我有一个请求范围的 Struts 1 操作,其中包含来 self 的应用程序的自定义 POJO 对象列表。在操作中,我使用 request.setAttribute("myForm", myForm) 来设置表单值。当我到达 JSP 页面时,我尝试使用 c: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)

我的 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>

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

最佳答案

您需要将表达式包装在 ${} 中。

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

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

关于java - c :forEach returning String instead of Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5544875/

相关文章:

java - Spring MVC 中的瓷砖

java - Struts2 验证无法正常工作

java - 如果用户已登录(使用 JSTL <if> 语句),如何检查 JSP 并显示用户名?

java - 重新加载使用 setBundle 加载的属性文件

java - 在包含两个对象的数组中,如何在 (1) 处获得越界异常?

java - 如何使用 Java Swing 实现责任链

Java变量必须在它自己的范围内初始化?

Java - 锁定 JFrame 的纵横比

java - 为什么在 HTML 中显示转义字符?

java - ${requestScope ['javax.servlet.forward.query_string' ]} 为空