java - JSTL forEach 在自定义标签中不起作用

标签 java jsp jakarta-ee jstl el

我的类(class):

public class CustomObject {
    private String name;

    public String getName() {
        return "test";
    }
}

请求:

List<CustomObject> items = new ArrayList<CustomObject>();
items.add(new CustomObject());
request.setAttribute( "items", items );

这个例子在我的 jsp 中运行:

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

但是当我使用自定义标签时返回错误。为什么不读属性?

<%@ attribute name="list" required="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:if test="${!empty list}">
   <c:forEach var="item" items="${list}">
        <li><c:out value="${item.name}"/></li>
    </c:forEach>
</c:if>

控制台:

Caused by: javax.el.PropertyNotFoundException: The class 'java.lang.String' does not have the property 'name'.

最佳答案

指定属性类型,不指定list属性类型默认为 String :

<%@ attribute name="list" required="true" type="java.util.List" %>

关于java - JSTL forEach 在自定义标签中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25150537/

相关文章:

java - UsbRequest.queue 崩溃 Android 3.1 应用程序

java - 如何防止 Weblogic 使用 ExpressionInterceptor?

mysql - hibernate 设置属性以触发数据库更新

java - 如何将 GlideBitmapDrawable 相互转换为 BitmapDrawable

java - 为什么servlet-api.jar的状态会从测试状态变成编译状态?

java - HttpSessionListener 测试,出现奇怪的错误

java - 确保一个任务在 java 中另一个任务开始之前完成

java - JSP 是 servlet 但 JSP 中没有名为 doGet() 或 doPost() 的函数?

java - 类文件应该放在哪个文件夹中以便 JSP 访问它?

java - 一个 Servlet Controller 与多个 Controller