【问题标题】:c:forEach returning String instead of Objectc:forEach 返回字符串而不是对象
【发布时间】:2011-07-29 12:41:10
【问题描述】:

我有一个范围为 Struts 1 Action 的请求,其中包含来自我的应用程序的自定义 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>

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

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

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

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

    否则它确实被视为String,即具有文字值"myForm.myList"

    【讨论】:

    • 非常感谢您发布此信息。添加 ${} 解决了我的问题。
    • @javanna:15 分钟后才有可能(我已经打算在 30 分钟后发表“不客气”评论;)。
    猜你喜欢
    • 2017-07-18
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多