28 nov. 2011

JSTL: foreach

Buenas a todos, vamos con una duda que me ha surgido, la solución que he encontrado y una petición....

Introducción a mi problema: estoy desarrollando un formulario de búsqueda, el proyecto es viejo, puedo usar JSTL básico, nada de añadir librerías. Tiene que funcionar sobre websphere application server. El actionForm que tengo que usar está formado por atributos básicos sin nada de objetos de clases propias, para el caso concreto necesito obtener los indices del combo de un ArrayList y las descripciones de otro ArrayList diferente.


Solución más limpia que he encontrado: La manera más limpia que he encontrado para hacer lo que quiero es pasando ambos arraylist a dos objetos en el request y recorriendo uno de ellos con un forEach crear el combo:


<html:select style="overflow-x:hidden" multiple="true" size="5"  property="asAgrupacion" tabindex="12">
  <html:option value="0">Ninguno</html:option>
<%
  request.setAttribute("codAgrupaciones", formulario.getalFormAgrupacionCodigos()); 
  request.setAttribute("nomAgrupaciones", formulario.getalFormAgrupacion());
%>
  <c:forEach items="${codAgrupaciones}" varStatus="loop">
    <html:option value="${codAgrupaciones[loop.index]}">
    <c:out value="${nomAgrupaciones[loop.index]}"/>
    </html:option>
  </c:forEach>
</html:select>



Petición: No me acaba de gustar eso de tener que meter en el request los dos arraylist pero no he conseguido que funcione de otra manera, si alguien tiene alguna idea estaré encantado de probarla :)


EDICIÓN


He encontrado una manera mucho más limpia de hacer lo mismo:


<html:select style="overflow-x:hidden" multiple="true" size="5" property="asAgrupacion" tabindex="12">
<html:option value="0">Ninguno</html:option>
<html:options property="alFormAgrupacionCodigos" labelProperty="alFormAgrupacion" />
</html:select>

Shutdown -r now

Pues eso mismo, reinicio el blog desde este momento