Ayuda en Validacion Struts

neossoftware
07 de Marzo del 2010
Que tal comunidad Open Source:

Tengo una duda acerca de Struts, estoy trabajando con un formulario y estoy realizando las validaciones por medio del framework de validación de Struts, pero en toda la documentacion que he encontrado segun me dice que las validaciones las hace en automatico con JavaScript, pero lo que yo necesito es que las validaciones sean en automatico pero en el servidor!!!!!

Con lo siguiente:

<head>
<title>User Registration</title>
<html:javascript formName="user"/>
</head>

Pero la bronca es que yo no quiero que las validaciones me las haga en el cliente, si no que sean en el servidor y en la pagina JSP lo unico que quiero que aparezca son los mensajes:

Ya esta configurado el Plugin de validacion

<plug-in
className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

Ahora que más debo de Hacer????

1 Las clases hijas de ValidationForm se van encargar de eso???

2. Es obligatorio lo de la validacion JavaScript????

Saludos y muchas gracias por la ayuda.

5erg10
07 de Marzo del 2010
Yo no sé si lo estás haciendo igual que yo, pero por si acaso te digo la forma que sigo yo para validar formularios.

Para recoger los datos del formulario (es decir, de la página jsp que contiene el formulario) tienes que crear una clase que sea hija de la clase ActionForm, y en esa clase existe un método llamado validate() en el cual se hará la validación de los campos del formulario (mirar si están vacios, que no sean letras en vez de números...)

Mira, para que lo veas mejor ahí te va un ejemplo de una página en jsp que contiene el formulario, y la clase Form que lo recoge y lo valida:

Primero la página JSP que presenta el formulario, y en caso de que haya errores los presenta mediante la etiqueta <logic:messagesPresent>
http://www.reumann.net/struts/lesson2/step14.do

Ahora la clase Form, que como verás, simplemente es un contenedor de los datos del formulario, y un método de validación donde se comprueba que los campos no estén vacios y la edad sea un número. En caso de error, se mostrarán automáticamente en la página JSP:
http://www.reumann.net/struts/lesson2/step4.do

El tutorial de esa página a mí me ha venido de lujo.

No sé si ésto era lo que pedías, es que yo acabo de empezar a trabajar con Struts y lo mismo tu problema es más avanzado. Que haya suerte ;)

neossoftware
07 de Marzo del 2010
Pues muchas gracias por la ayuda:

Me ha servido de mucho, si en efecto tienes razón al usar los ActionForm y el método validate para validar los campos con el código Java, pero lo que yo necesitaba era que pudiera manajar expresiones regulares en el XML y ahi tambien configurar los mensages y de esta manera no tener que escribir codigo Java para validar los campos por ejemplo:

Integer.parseInt() o Double.parseDouble() etc o bien si el campo es requerido etc etc.

Pues ya me eche un clavado en la documentación de Struts y ya lo he conseguido, realmente esta muy potente, esto se logra através de la siguiente manera , en el struts-config.xml colocar lo siguinte:

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

y en el validation.xml van las reglas con las que va a procesar la forma:

<form-validation>
<global></global>
<formset>

<form name="converterForm">

<field property="value" depends="required,mask">

<msg name="mask" key="ConverterForm.value.maskmsg" />
<arg0 key="ConverterForm.value.required" />
<var>
<var-name>mask</var-name>
<var-value>^[0-9]{0,4}(.d{1,3})?$</var-value><!-- ^[1-9]*$ 3 enteros y 3 decimales -->
</var>

</field>

<field property="radioOption" depends="required">
<arg0 key="ConverterForm.radioOption.required" ></arg0>
</field>

</form>

</formset>
</form-validation>

Ahora para que la validación se realice en automatico, y leea la configuracion XML,se debe usar la clase

public class ConverterForm extends ValidatorForm {


private String value="";

private String radioOption="1";

public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {

ActionErrors errors= super.validate(mapping,request); //valida con los XML



if (errors==null) {
errors=new ActionErrors();
}

return errors;

}

}

y en la pagina JSP yo usé : <html:errors />

Espero que esto les sirva, si gustan el ejemplo para aprender este tema, se los mando por correo electronico
SAludos.

Viva Linux Debian y Java

fmiranda
07 de Marzo del 2010
Hola me gustaria contar con tu ejemplo, ya que en estos momentos estoy tratando de hacer funcionar la validación con Struts y no lo consigo.

Gracias de antemao

Karla
07 de Marzo del 2010
Me encantaria el ejemplo del que hablas me lo podrías enviar gracias