Malgrat la intenció d’aquest bloc no és pas la de comentar temes informàtics, com que no hi ha res que ho impedeixi, faré una excepció i explicaré una forma de marcar en un drop-down la opció que l’usuari ha seleccionat previament. En realitat, és molt simple, però no he trobat gaire documentació i la que he vist, era poc clara, pel que he hagut de fer bastant assaig-error. Fem servir Java i Struts2.

Tenim, en l’Action del codi Java :


import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;

public class ClasseTest extends ActionSupport{
private List laMevaLlista;
private String elMeuValor;

     public String execute() throws Exception {
          laMevaLlista = new ArrayList();
          for (int i=0; i<10; i++) {
               laMevaLlista.add("" + i);
          }
     }

     public List getLaMevaLlista() {
          return laMevaLlista;
     }

     public void setLaMevaLlista(List laMevaLlista) {
          this.laMevaLlista = laMevaLlista;
     }

     public String getElMeuValor() {
          return elMeuValor;
     }

     public void setElMeuValor(String elMeuValor) {
          this.elMeuValor = elMeuValor;
     }

 

i en el jsp, el que volem és mostrar un drop-down amb tots els valors de “laMevaLlista”, però volem que el valor marcat per defecte sigui “elMeuValor”.

És realment senzill :

<%@ taglib prefix="s" uri="/struts-tags" %>

<select>
<s:iterator value="laMevaLlista" id="valorActual" >
<s:if test="elMeuValor == #valorActual" >
<option selected>
<s:property value='elMeuValor'/>
</option>
</s:if>
<s:else>
<option>
<s:property/>
</option>
</s:else>
</s:iterator>
</select>

i ja està ! Comento també que dins de l’iterator, el “valorActual” que he posat com a “id”, pot ser qualsevol cosa, tot i que ha de coïncidir amb el valor que posem a dins del test, és clar.

Segur que aviat ho oblidaré i em vindrà bé tenir-ho apuntat aquí !