EJB (Enterprise Java Beans) - Problema con Validator

 
Vista:

Problema con Validator

Publicado por Juan Pablo (2 intervenciones) el 10/07/2007 18:03:36
Buenas!


Estoy realizando validación con Struts Validator Framework y tengo un problema.


Tengo un formulario (hereda de "ValidatorForm") para el alta de usuarios cuyo nombre es "altaUsuarioForm", y su correspondiente página jsp es "alta.jsp".
Necesito que la validación del formulario sea del lado del cliente, para lo cual he seguido los pasos que he leído en
diferentes manuales, páginas, etc. Según estos, en "alta.jsp", dentro de la sección "head", he incluido la línea
"<html:javascript formName="altaUsuarioForm"/>", y más adelante tengo la línea "<html:form action="/altaUsuario"
method="POST" target="_self" onsubmit="return validateAltaUsuarioForm(this);">". Hasta aquí todo lo necesario con respecto a
la página jsp.


En validation.xml tengo:

<form-validation>

<global>
<constant>
<constant-name>descriptor</constant-name>
<constant-value>^[0-9a-zA-Z]*$</constant-value>
</constant>
</global>

<formset>
<form name="altaUsuarioForm">
<field property="idUsuario" depends="required, mask">
<arg0 key="prompt.idUsuario"/>
<var>
<var-name>mask</var-name>
<var-value>${descriptor}</var-value>
</var>
</field>
<field property="pwd" depends="required, mask">
<arg0 key="prompt.pwd"/>
<var>
<var-name>mask</var-name>
<var-value>${descriptor}</var-value>
</var>
</field>
<field property="confPwd" depends="required, mask">
<arg0 key="prompt.confPwd"/>
<var>
<var-name>mask</var-name>
<var-value>${descriptor}</var-value>
</var>
</field>
<field property="pregSecr" depends="required">
<arg0 key="prompt.pregSecr"/>
</field>
<field property="respSecr" depends="required">
<arg0 key="prompt.respSecr"/>
</field>
</form>
</formset>

</form-validation>


El código javascript para la validación del lado del cliente, al ser validaciones comunes ya incluidas con el framework, lo
incluyo en validator-rules.xml con la etiqueta "jsFunction", es decir,

<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required"
jsFunction="org.apache.commons.validator.javascript.validateRequired"/>

<validator name="mask"
classname="org.apache.struts.validator.FieldChecks"
method="validateMask"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.invalid"
jsFunction="org.apache.commons.validator.javascript.validateMask"/>


Lo cierto es que la ejecución es la misma incluya "jsFunction" o no, pero he querido probar con ambos casos. Dicha ejecución
es mi problema, y es la siguiente:

Mientras uno de los 5 campos no esté relleno, me sale el correspondiente mensaje tipo Windows con su botón de Aceptar
diciéndome, por ejemplo, "identificador usuario es un campo obligatorio". Hasta ahí bien, aunque quiero señalar que no se muestra ningún otro tipo
de error de validación mientras "validateRequired" no se cumpla para los 5 campos, lo cual no me será interesante más
adelante, pero bueno.
Estando los 5 campos rellenos, si "idUsuario" no cumple con mi máscara descrita, de nuevo la validación es del lado cliente
con el mensaje tipo Windows, pero si lo introduzco correctamente y cualquiera de los otros 2 campos lo hago de forma incorrecta (pwd y/o confPwd),
entonces la validación se produce del lado del servidor!!, ya que me salen los mensajes de error en la página jsp a través del "<html:errors>"
que figura en "alta.jsp".


No tengo ni idea de por qué, ni le encuentro ninguna lógica al permitirme validar del lado del cliente un campo sí (idUsuario) y otros no
(pwd y confPwd) con la misma regla de validación.
Estoy usando para el desarrollo Netbeans 5.5 y su Struts 1.2.9, y los campos anteriores se corresponden con un identificador
de usuario, la contraseña, y su confirmación. He leído que, para el caso de validar la existencia de un mínimo y un máximo de
caracteres, lo cual me interesa también, no es aconsejable hacerlo con contraseñas, pero sólo es una recomendación que no tiene
por qué suponer un error y aplicable
a la página de login, lo cual no es mi caso.

Agradecería cualquier ayuda, de verdad!

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder