gpt4 book ai didi

java - JSTL forEach 遍历实现 Iterable 的用户定义类

转载 作者:行者123 更新时间:2023-12-02 17:03:26 25 4
gpt4 key购买 nike

<分区>

我的问题与这里的问题类似: JSTL - Using forEach to iterate over a user-defined class但是,(明显且简单的)解决方案对我不起作用,所以我再次询问以寻求任何建议。

我有一个实现 Iterable 接口(interface)的简单类,例如:

public class Lizt implements Iterable<String> {

private ArrayList<String> inner = new ArrayList<>();

public Lizt(){
this.inner.add("A");
this.inner.add("B");
}

@Override
public Iterator<String> iterator() {
return inner.iterator();
}

public Iterable<String> getInner(){
return this.inner;
}
}

(暂时忽略“getInner()”函数)。然后我有一个简单的 JSP 页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="lst" scope="session" class="model.Lizt"/>
<html>
<body>
<ul>
<c:forEach var="item" items="${lst}">
<li>${item}</li>
</c:forEach>
</ul></body></html>

因此,我正在尝试迭代一个实现 Iterable 的实例。但是,服务器返回我(以及其他人)

javax.servlet.ServletException: org.apache.jasper.JasperException: An exception occurred processing JSP page [/forEachTest.jsp] at line [7]
...
Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;

如果我替换 JSP 表达式以直接访问内部内部字段,例如

<c:forEach var="item" items="${lst.inner}">

...一切正常。 “我的”Iterable 和 ArrayList 的 Iterable 有什么区别?

提前感谢您的任何建议。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com