一尘不染

JSTL-使用forEach遍历用户定义的类

jsp

我需要向自定义Java类添加什么方法,以便可以迭代其成员之一中的项目?我找不到有关JSTL
forEach标记实际工作方式的任何规范,所以我不确定如何实现这一点。

例如,如果我创建了一个通用的“ ProjectSet”类,并且希望在JSP视图中使用以下标记:

<c:forEach items="${projectset}" var="project">
...
</c:forEach>

基本类文件:

public class ProjectSet {
    private ArrayList<Project> projects;
    public ProjectSet() {
        this.projects = new ArrayList<Project>();
    }
    // .. iteration methods ??
}

有没有我必须实现的接口(如PHP的接口)ArrayAccessIterator使之正常工作的接口?

编辑:在不直接访问ArrayList本身的情况下,因为我可能会使用泛型使用某种Set类,并且JSP视图不必知道该类的内部工作原理。


阅读 301

收藏
2020-06-08

共1个答案

一尘不染

Iterable接口提供此功能:

public class ProjectSet implements Iterable<Project> {
    private ArrayList<Project> projects;
    public ProjectSet() {
        this.projects = new ArrayList<Project>();
    }

    // .. iteration methods ??
   @Override
   public Iterator<Project> iterator() {
       return projects.iterator();
   }
}

您可以根据需要交换迭代器逻辑。

2020-06-08