JSTL forEach无法在自定义标记中工作

时间:2014-08-06 00:35:27

标签: java jsp java-ee jstl el

我的班级:

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>

控制台:

  

引起:javax.el.PropertyNotFoundException:该类   &#39; java.lang.String中&#39;没有属性&#39; name&#39;。

1 个答案:

答案 0 :(得分:1)

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

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