Ésta vez queremos añadir un selector con Struts, lo que en java se conoce como JComboBox y en forms de windows Select.
Tenemos un formulario en JSP para recoger los datos de un nuevo Mii, y en concreto, el dato sexo queremos que sea un ComboBox. El archivo JSP se llama formularioMii.jsp y el código con los formularios de struts es el siguiente:
<s:form action="SaveMii">
<s:textfield name="nombre" label="Nombre: " value="%{mii.nombre}"/>
<s:select name="sexo" label="Sexo: " list="#{'Hombre':'Hombre','Mujer':'Mujer'}" value="%{mii.sexo}"/>
<s:textfield name="estatura" label="Estatura: " value="%{mii.estatura}"/>
<s:textfield name="peso" label="Peso: " value="%{mii.peso}"/>
<s:textfield name="pelo" label="Pelo: " value="%{mii.pelo}"/>
<s:textfield name="ojos" label="Ojos: " value="%{mii.ojos}"/>
<s:textfield name="color" label="Color favorito: " value="%{mii.color}"/>
<s:hidden name="id" value="%{mii.id}"/>
<s:submit value="Aceptar" />
</s:form>
En el texto resaltado se puede ver como agregar un selector. Es interesante detallar la declaración del atributo list:
list="#{cod_item1 : texto_item1, cod_item2 : texto_item2}"En la mayoria de ejemplos en internet el cod_item suele ser un número entero de manera que se pueda controlar en la capa de negocio. Para el caso en particular que quiero tratar aquí, no me hace falta utilizar un código entero, sino que prefiero utilizar un código de texto o String para que se transmita de capa a capa siendo un String, hasta llegar a la capa de persistencia y se agregue tal cual a la base de datos.
Este código de formularioMii.jsp no sólo sirve para dar un alta a un Mii, sino tambien para mostrar la edición de uno de estos. Es por eso que a cada formulario se le asigna un value, de forma que cuando se trate de un alta aparecerá vacío, y cuando sea una edición se mostrará el valor del Mii en cuestión.
Existe otra forma más compleja de utilizar el selector, pero que explicaré más adelante, si la llego a utilizar. Como adelante, implicaría que el atributo sexo en la base de datos fuera de tipo entero, crearíamos una nueva clase en la capa de modelo llamada SexoMii, y el selector tendría un cod_item como valor numérico. Esto puede llegar a ser muy útil en futuras implementaciónes más complejas.
No hay comentarios:
Publicar un comentario