Struts: impedir que valide al navegar a la página.

acopado
09 de Abril del 2008
Hola,

Estoy empezando con struts y me ha surgido un problema. Tengo el expedientesAction.java, expedientesActionForm.java y el expedientes.jsp Cuado voy a la página (expediente.do) que representa al ActionForm (expedientesActionForm,java), al llegar, me salen los mensajes de validación. Es decir, sin que me den opción a meter datos ya me sale el mensaje de error de la validación.

Yo quiero que me valide los datos una vez rellenado el formulario jsp y no al llegar hasta la página. ¿Cómo puedo evitar que me realice esta primera validación?

Un saludo y gracias!


withnodelay
09 de Abril del 2008
a ver tienes un jsp que pilla los datos, este ataca un action y tienes asociado un bean a tu formulario verdad???

Para hacer la validacion tienes que añadir a tu clase bean el metodo validate, dentro de el realizas la logica de control de errores y para que no te pase al action tienes que añadir el parametro input dentro del struts-config. Seria algo asi

en tu jsp añades al final,importando las taglib de struts html :<html:errors/>

en tu bean añades el metodo validate devolviendo un array de errores. Te pongo la cabcera y un ejemplo:
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();

if (getNombre().trim().equals("") ||
getNombre() == null) { //error nombre vacio
errors.add("nombreEnBlanco",
new ActionError("error.nombre.enBlanco"));
}
... return errors;

y por ultimo añade esta linea al struts config
<action path="/TuAction" type="view.actions.TuAction" name="Tubean" scope="request" input="/Tujsp.jsp">


bueno no se si esto era lo que necesitabas, pero asi puedes hacer la validacion en cliente facil, facil

Un saludo

acopado
09 de Abril del 2008
Primero muchas gracias withnodely por tu respuesta pero no es lo que buscaba; perdón porque no me he explicado bien.

La validación la tengo configurada como tú acabas de explicar. Sin embargo, el problema viene cuando accedo a esa página mediante un enlace. Imagínate que aquí pongo un enlace a mi página, nada más pinchar mostraría el formulario y los mensajes de validación (error: campo vacío). Yo no quiero que me salgan esos errores hasta que no pulse un botón que es quien acaba llamando a la validación.

Una solución sería llamar directamente a la .jsp y así no realiza la primera validación y no saldrían los mensajes de error. Sin embargo, necesito que llame al .do para que recarge unos select desde base de datos.