需要將哪些方法添加到自定義Java類中,以便可以迭代其中一個成員的項目?我找不到任何關於JSTL forEach標籤實際工作的規範,所以我不知道如何實現這一點。JSTL - 使用forEach遍歷用戶定義的類
例如,如果我犯了一個通用的「ProjectSet」級和我woud喜歡用下面的標記在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的ArrayAccess
或Iterator
爲了這個工作?
編輯:沒有直接訪問ArrayList本身,因爲我可能會使用某種使用泛型的Set類,並且JSP視圖不應該知道類的內部工作方式。
請注意,對於每個類型,JSTL forEach不支持iterable(非常煩人)。所以你需要做$ {projectSet.iterator()} – 2011-02-13 15:16:36
實際上.iterator()只能在最新的Servlet容器上工作(甚至最新的JSTL仍然不支持迭代)。您將需要爲迭代器(getIterator())創建一個getter。 – 2011-02-14 00:29:35