Ver Mensaje Individual
  #6 (permalink)  
Antiguo 17/03/2005, 02:38
JoRReT
 
Fecha de Ingreso: septiembre-2003
Ubicación: zaragoza
Mensajes: 7
Antigüedad: 21 años, 4 meses
Puntos: 0
Cita:
Iniciado por milsoncardona
dices que trabajas en STRUTS... bien si te has dado cuenta, cuando se crea un formulario en una pagina JSP, se debe crear una clase ACTIONFORM que captura los datos que introduces en el formulario cuando lo envias.

ahora bien, en STRUTS existe una forma de validar dichos datos antes de ejecutar la acción que debe ejecutarse al enviar el formulario.

puedes, en la clase ACTIONFORM validar si los datos que tiene el formulario del JSP son validos, si lo son haces la consulta a la DB, sino devuelves un mensaje en la pagina JSP, donde le digas al usuario que debe rellenar todos los campos.

la configuracion para decirle a STRUTS que tal o cual formulario lo debe validar antes de ejecutar la accion, debe ir en el STRUTS_CONFIG.XML, allí mismo donde defines los <ACTION_MAPPINGS>

mira este ejemplo

<action-mappings>
.
.
.
<action path="/login"
type="co.edu.uco.action.LoginAction"
name="loginForm"
scope="request"

validate="true"

input="/jsp/login.jsp">
<forward name="bien" path="/jsp/maestroFormatos.jsp" redirect="false" />

<forward name="mal" path="/jsp/login.jsp" redirect="false" />
</action>

.
.
.
<action-mappings>


es solo un ejemplo de como se configura en el STRUTS - CONFIG una pagina LOGIN.JSP para que sea reconocida por una clase java llamada LOGINFORM

ahora el codigo de la validacion es el siguiente, este metodo va dentro del ACTIONFORM en este caso LOGINFORM

public ActionErrors validate( ActionMapping mapping, HttpServletRequest request ) {
ActionErrors errors = new ActionErrors();
if (getUsuario() == null || getUsuario().equals("")) {
errors.add("Usuario",new ActionError("error.usuario.requerido"));
}
if (getPassword() == null || getPassword().equals("")) {
errors.add("Usuario",new ActionError("error.contrasena.requerida"));
}
if ( getIdentificacion() == null || getIdentificacion().equals("")) {
errors.add("Identificacion",new ActionError("error.identificacion.requerida"));
}else{
try {
Double.parseDouble(getIdentificacion());
} catch( NumberFormatException ne ) {
errors.add("Identificacion",new ActionError("error.identificacion.numerica"));
}
}
return errors;
}



y para mostrar los errores en la pagina JSP utilizas el siguiente codigo dentro de tu pagina JSP (antes crear el formulario)

<logic:messagesPresent>
<span id="errorsHeader"><bean:message key="errors.encabezado.validacion"/></span>
<html:messages id="error">
<li><c:out value="${error}"/></li>
</html:messages>
<hr>
</logic:messagesPresent>


esto debes analizarlo bien porque lo he sacado de un aplicación mia, y no me he detenido a mirar que variables debo cambiar para que lo entiendas....

pero puedes investigar, como te digo VALIDATION en struts

espero que toda esta retaila te pueda ayudar a solucionar el prblema

Buenos dias, en primer lugar gracias por contestar....

Eso que me comentas en la aplicación ya esta implementado, tenemos unas cuantas paginas de error y una clase que controla todo tipo de errores, la cual es llamada en los catch de los metodos que utilizamos...

El problema que tengo yo es que no se como controlar unos valores con javascript cuando los registros estan en un iterate, cuando trabajaba sin struts me creaba un contador y en el name del input lo añadia:
<input ype=text name='cosecha_<%=cont%>' ...>

de tal manera que en la función javascript pasaba el cont y asi me podia hacer con el value y ostrar un alert en caso de ser necesario...

En este caso me ocurre lo mismo, al ser un formulario grande y pulsar un boton se debe abrir una ventana tipo popup y aparecer una serie de valores que se obtienen de la base de datos a traves de otros 5 campos que son la PKey, lo que no quiero es abrir la ventana para mostrar un error, simplemente controlar con javascript si los 5 campos que son Pkey están rellenados y entonces hacer la consulta......


No se si me explico bien, el problema es que no se referenciarme a un html:text con javascriopt, he leido por ahi que poniendo la propiedad indexed a true el input pasa a llamarse de la siguiente manera :
id[norden]propertyName , pero esto no me funciona.......