¿Qué métodos debo agregar a una clase Java personalizada para que pueda iterar sobre los elementos en uno de sus miembros? No pude encontrar ninguna especificación sobre cómo funciona realmente la etiqueta JSTL forEach, así que no estoy seguro de cómo implementarla.JSTL - Usar forEach para iterar sobre una clase definida por el usuario
Por ejemplo, si he hecho una clase genérica "ProjectSet" y me llenar gusta usar la siguiente línea de código en la vista JSP:
<c:forEach items="${projectset}" var="project">
...
</c:forEach>
básica de archivos de clases:
public class ProjectSet {
private ArrayList<Project> projects;
public ProjectSet() {
this.projects = new ArrayList<Project>();
}
// .. iteration methods ??
}
¿Hay ¿Alguna interfaz que debo implementar como PHP ArrayAccess
o Iterator
para que esto funcione?
Editar: Sin acceso directo al ArrayList en sí mismo, porque probablemente usaré algún tipo de clase Set usando genéricos, y la vista JSP no debería tener que conocer el funcionamiento interno de la clase.
Advertencia a eso es que JSTL forEach no es compatible con iterable (extremadamente molesto) como para cada tipo. Por lo tanto, debe hacer $ {projectSet.iterator()} –
. En realidad, .iterator() solo funcionará en el último Servlet Container (e incluso el último JSTL aún no admite iterable). Tendrá que hacer un getter para el iterador (getIterator()). –