Este documento habla sobre la implementación de formularios en Struts 2. Explica cómo configurar las acciones, las clases de modelo y acción, y cómo crear el formulario en un JSP. También cubre el uso de la etiqueta <s:form>, la validación del formulario a través de la clase de acción, y cómo incluir estilos CSS para las validaciones.
4. Introducción
Struts permite una gestión unificada de los
formularios
Tiene distintos métodos dependiendo del
estado del formulario
input: método de ida al formulario para
que el usuario lo rellene
success: cuando el formulario se haya
enviado correctamente
5. Configuración de
la Acción
struts.xml
<action name="register"
class="es.consultec.pepesan.Register"
method="execute">
<result name="success">/thankyou.jsp</
result>
<result name="input">/register.jsp</result>
</action>
6. La clase del
Modelo de datos
Sería una clase normal con la salvedad del
implements Serializable
Debe tener ser un JavaBean
constructor sin parámetros
getters y setters por defecto para las
propiedades
toString para ayudar con el Debug
7. La clase de la
Acción
Como siempre hereda de
ActionSupport
Define una propiedad del modelo de
datos con sus getter y setter
Dispone de un execute como siempre
que devuelve SUCCESS en el caso de
que haya ido correcto
8. El formulario en
el JSP
registro.jsp
<s:form action="register">
<s:textfield name="personBean.firstName" label="First name" />
<s:textfield name="personBean.lastName" label="Last name" />
<s:textfield name="personBean.email" label ="Email"/>
<s:textfield name="personBean.age" label="Age" />
<s:submit/>
</s:form>
10. Validación del
Formulario
La clase Acción debe implementar el método validare
Dentro comprobamos las propiedades del objeto
de datos
Sino valida deberemos llamar al método
addFieldError(“campo”,”Texto del error”);
Struts2 se encarga de la gestión de la validación de
manera automática
Si el formulario valida nos lleva directamente al
result SUCCESS sino lleva al input
11. Validación del
Formulario
Para que salgan las validaciones
con estilos CSS es necesario incluir
dentro de la etiqueta <head/> el tag
<s:head/>