JavaDabbaDoo.org -Tu comunidad Java parlante Implementar MVC - Struts 1.2
Inicio | Cursos infosintesis.net liberados | Java EE | Registrar a un usuario en un sitio Web con Struts 1.2
Registrar a un usuario en un sitio Web con Struts 1.2
Paso 7: Operativa

Utilizar las etiquetas <logic:iterate> y <html:multibox> para mantener el estado de las casillas de verificación (checkboxes)

La etiqueta <html:multibox> de Struts renderiza a la etiqueta  <input type="checkbox"> de HTML.

Este es el funcinamiemto de las casillas de verificación o checkboxes

Esta forma de funcionar de las casillas de verificación hace que los estados de las casillas de verificación puedan ser inconsistentes entre peticiones de un mismo usuario a un mismo formulario. Es decir, si por ejemplo sólo tenemos seleccionadas dos casillas de verificación en una petición y entonces las desmarcamos para la siguiente petición, la respuesta del nuevo formulario que nos envía el servidor indicará que hay dos casillas de verificación seleccionadas en vez de ninguna.

Para evitar estas inconsistencias, tenemos que implementar el método reset() de la subclase ActionForm encargada de validar los datos del formulario en cuestión.

Ahora vamos a ver cómo se seleccionan las casillas de verificación de una página JSP con etiquetas de Struts sin utilizar Hojas de Estilio en Cascada (CSS) ni recursos para multilenguaje. El código correspondiente al ejercicio que estamos siguiendo lo veremos en el siguiente apartado.

<html:form action="registro">
 <logic:iterate id
="generoCine" name="RegistroActionForm" property="generoCinePosibles">
  <html:multibox property="generoCineSeleccionados">
   <bean:write name="generoCine"/> 
  </html:multibox> 
  <bean:write name
="generoCine"/> 
 </logic:iterate>
</html:form>

Y estas es la Clase RegistroActionForm que hereda de ActionForm

package paqactionforms;

public class RegistroActionForm extends org.apache.struts.action.ActionForm {

 private String[] generoCinePosibles = {"comedia","musical", "aventura", "policiaco",                                         "clasico", "melodrama"};
 private String[]
generoCineSeleccionados = {};

 public RegistroActionForm() {
  super();
 }

 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
  .
  .

 }

 public void reset(ActionMapping mapping, HttpServletRequest request) {
  generoCineSeleccionados = new String[0];
 }

 public String[] getGeneroCinePosibles() {
  return generoCinePosibles;
 }

 public String[] getGeneroCineSeleccionados() {
  return generoCineSeleccionados;
 }

 public void setGeneroCineSeleccionados(String[] generoCineSeleccionados) {
  this.generoCineSeleccionados = generoCineSeleccionados;
 }
}

Página anterior
Ignasi Pérez Valls
Infosintesis Solutions Group


Junio 2009
JavaDabbaDoo.org
Tu comunidad Java parlante. Cursos abiertos, tutoriales y mucho mucho más ...