AYUDA CON STRUTS
Hola a todos
Estoy realizando una aplicacion con struts q tiene una pagina con un formulario y dentro de este formulario hay algunos campos q son generados dinamicamente con javascript ya q no c sabe cuantos va a utilizar el usuario.
mi problema es q no tengo ni la mas remota idea de como capturar los campos dinamicos en el actionForm y despues pasarlos al action para realizar los insert a la base yo he realizado aplicaciones con strut antes pero los formulario no eran dinamicos y sabia con certeza la cantidad de campos a procesar pero en este caso ni idea.
no si alguien a tenido el mismo problema o similar antes y me hecha la mano con alguna idea para solucionar mi caso
de ante mano gracias por su tiempo
Estoy realizando una aplicacion con struts q tiene una pagina con un formulario y dentro de este formulario hay algunos campos q son generados dinamicamente con javascript ya q no c sabe cuantos va a utilizar el usuario.
mi problema es q no tengo ni la mas remota idea de como capturar los campos dinamicos en el actionForm y despues pasarlos al action para realizar los insert a la base yo he realizado aplicaciones con strut antes pero los formulario no eran dinamicos y sabia con certeza la cantidad de campos a procesar pero en este caso ni idea.
no si alguien a tenido el mismo problema o similar antes y me hecha la mano con alguna idea para solucionar mi caso
de ante mano gracias por su tiempo
No se si podra hacer pero puedes recorrer elementos con un bucle FOR-EACH en un bucle de este tipo no sabes cuantos elementeos. los almacenas en un array de objetos, Strings o lo que quieras y luego en el servlet tratarlo.
Buenas, con una función JavaScript puedes recojer todos los elementos del formulario y enviarlos por GET al action o a la controladora que lo va a procesar:
function getFormAsString(){
//Setup the return String
returnString ="";
//Get the form values
formElements=document.forms[0].elements;
//loop through the array, building up the url
//in the format '/strutsaction.do&name=value'
for(var i=formElements.length-1;i>=0; --i ){
//we escape (encode) each value
returnString+="&"
+escape(formElements[i].name)+"="
+escape(formElements[i].value);
}
//return the values
return returnString;
}
function getFormAsString(){
//Setup the return String
returnString ="";
//Get the form values
formElements=document.forms[0].elements;
//loop through the array, building up the url
//in the format '/strutsaction.do&name=value'
for(var i=formElements.length-1;i>=0; --i ){
//we escape (encode) each value
returnString+="&"
+escape(formElements[i].name)+"="
+escape(formElements[i].value);
}
//return the values
return returnString;
}
Si creas dinamicamente campos, y nombras a los campos del mismo modo, podrÃas tener un arreglo de campos, diferenciados por un indice.
En tu jsp, quedarÃa algo asà como:
Ej.:
<input type="text" name="campos" value=""/>
<input type="text" name="campos" value=""/>
.
.
.
<input type="text" name="campos" value=""/>
En tu form recibirÃas los valores de los campos con una variable tipo array:
Ej.: <form-property name="campos" type="java.lang.String[]"/>
y ya en tu action, recuperas tu array:
Ej.:
String[] campos= (String[])((DynaActionForm)form).get("campos");
lo recorres y obtienes los valores, para realizar con ello lo que necesites:
Ej.: for(String campo: campos){
Dao.insert(campo);
}
Ahora si para cada campo en tu formulario, requieres de un nombre de campo especifico en tu base de datos, puedes anexar un control tipo hidden para asignarle el nombre del campo de la base de datos que hace referencia el valor del campo.
En tu jsp.
Ej.:
<input type="text" name="campos" value=""/>
<input type="hidden" name="camposBD" value="campo1"/>
<input type="text" name="campos" value=""/>
<input type="hidden" name="camposBD" value="campo2"/>
.
.
.
y recuperas de la misma manera los valores del nombre del campo y su valor correspondiente.
Ej.: for(int i; i <campos.length; i++){
//camposBD[i]: nombre del campo en la bd
//campos[i]: valor del campo
Dao.insert(campoBD[i] , campo[i]);
}
Saludos!!!
En tu jsp, quedarÃa algo asà como:
Ej.:
<input type="text" name="campos" value=""/>
<input type="text" name="campos" value=""/>
.
.
.
<input type="text" name="campos" value=""/>
En tu form recibirÃas los valores de los campos con una variable tipo array:
Ej.: <form-property name="campos" type="java.lang.String[]"/>
y ya en tu action, recuperas tu array:
Ej.:
String[] campos= (String[])((DynaActionForm)form).get("campos");
lo recorres y obtienes los valores, para realizar con ello lo que necesites:
Ej.: for(String campo: campos){
Dao.insert(campo);
}
Ahora si para cada campo en tu formulario, requieres de un nombre de campo especifico en tu base de datos, puedes anexar un control tipo hidden para asignarle el nombre del campo de la base de datos que hace referencia el valor del campo.
En tu jsp.
Ej.:
<input type="text" name="campos" value=""/>
<input type="hidden" name="camposBD" value="campo1"/>
<input type="text" name="campos" value=""/>
<input type="hidden" name="camposBD" value="campo2"/>
.
.
.
y recuperas de la misma manera los valores del nombre del campo y su valor correspondiente.
Ej.: for(int i; i <campos.length; i++){
//camposBD[i]: nombre del campo en la bd
//campos[i]: valor del campo
Dao.insert(campoBD[i] , campo[i]);
}
Saludos!!!
