Jakie metody należy dodać do niestandardowej klasy Java, aby można było iterować po elementach jednego z jej członków? Nie mogłem znaleźć żadnych specyfikacji dotyczących działania znacznika JSTL forEach, więc nie jestem pewien, jak to zaimplementować.JSTL - Używanie forEach do iterowania po klasie zdefiniowanej przez użytkownika
Na przykład, jeśli zrobiłem rodzajowe "ProjectSet" klasę i woud Lubię używać poniższego znaczników w widoku JSP:
<c:forEach items="${projectset}" var="project">
...
</c:forEach>
Podstawowe plik klasy:
public class ProjectSet {
private ArrayList<Project> projects;
public ProjectSet() {
this.projects = new ArrayList<Project>();
}
// .. iteration methods ??
}
Czy istnieje każdy interfejs, który muszę wdrożyć, jak PHP ArrayAccess
lub Iterator
, aby to zadziałało?
Edycja: Bez bezpośredniego dostępu do samej tablicy ArrayList, ponieważ prawdopodobnie będę używał jakiejś klasy Set przy użyciu generycznych, a widok JSP nie powinien wiedzieć o wewnętrznych działaniach klasy.
Utrata tego jest taka, że JSTL forEach nie obsługuje iteracji (bardzo irytującej) jako forEach type. Musisz więc wykonać $ {projectSet.iterator()} –
W rzeczywistości .iterator() będzie działał tylko na najnowszym Servlet Container (a nawet najnowszy JSTL nadal nie obsługuje iteracji). Będziesz musiał zrobić getter dla iteratora (getIterator()). –