JSTL – 使用forEach迭代用户定义的类

我需要将哪些方法添加到自定义Java类中,以便我可以迭代其中一个成员中的项目? 我找不到关于JSTL forEach标签实际如何工作的任何规范,所以我不确定如何实现它。

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

 ...  

基本类文件:

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

是否有任何接口我必须实现,如PHP的ArrayAccessIterator才能使其工作?

编辑:没有直接访问ArrayList本身,因为我可能会使用generics使用某种Set类,而JSP视图不应该知道类的内部工作。

Iterable接口提供此function:

 public class ProjectSet implements Iterable { private ArrayList projects; public ProjectSet() { this.projects = new ArrayList(); } // .. iteration methods ?? @Override public Iterator iterator() { return projects.iterator(); } } 

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

是的,你应该实现java.util.Iterable