Foros del Web » Programación para mayores de 30 ;) » Java »

cómo enviar un valor a través de un formulario oculto

Estas en el tema de cómo enviar un valor a través de un formulario oculto en el foro de Java en Foros del Web. Hola, tengo un problema al intentar enviar un valor a través de un formulario oculto. Tengo una clase jsp en la que hago lo siguiente: ...
  #1 (permalink)  
Antiguo 27/07/2007, 03:18
 
Fecha de Ingreso: marzo-2007
Mensajes: 34
Antigüedad: 17 años, 1 mes
Puntos: 1
cómo enviar un valor a través de un formulario oculto

Hola, tengo un problema al intentar enviar un valor a través de un formulario oculto.

Tengo una clase jsp en la que hago lo siguiente:

// saco de mi base de datos la información necesaria para mostrar en un formulario, de modo que el siguiente código es un desplegable donde aparecen todas las "metodologias" que hay almacenadas. Con esto no hay problema

<%
for(int i=0; i < numeroMetodologias ; i++) {
int id=(Integer)listaMetodologias.get(i);
metod=mimetod12.getDetails(id);

metodologia+="<option value='" + metod.getIdMetodologia() + "'>" + metod.getNombre()+ " (" + metod.getDescripcion() +") </option>";
%>

<% }
metodologia+="</select>";%>


// y luego, les muestro para seleccionar sólo una

<tr>
<td align="center" bgcolor="#666699" class="camposform1">Seleccione Metodologia: </td>
<td align="center" bgcolor="#666699" class="camposform1"><%=metodologia%></td>
</tr>

// entonces, quiero almacenar la "metodologia" seleccionada.
// yo hago lo siguiente:


<tr>
<td align="center" bgcolor="#666699" height="25" colspan="2">
<input name="Submit" type="submit" class="botonesform1" onclick="javascript:validar(<%=(metod.getIdMetodol ogia())%>);" value="<%=language_nuevoProyecto.cadena[2]%>">
</td>
</tr>


// porque cojo el identificador de esa metodología (getIdMetodologia) para pasárselo, a otra clase, al principio del formulario tengo:

<form name="frmAltaProy" method="post" action="insertarProyecto.jsp" onSubmit="return validarAlta(this);">
<input type="hidden" name="idMetodologia">


// es decir, que paso el valor "idMetodologia" a la clase "insertarProyecto.jsp"

// y claro, tengo definidas:


<script language="JavaScript" type="text/JavaScript">
function validar(idMetodologia)
{
document.frmAltaProy.option.value="validacionMetod ologia";
document.frmAltaProy.idMetodologia.value=idMetodol ogia;
document.frmAltaProy.submit();
}
function validarAlta(frmAltaProy){

var bValido=false;
if (isVacio(document.frmAltaProy.sNombre.value)){
document.frmAltaProy.sNombre.focus();
document.frmAltaProy.sNombre.select();
bValido=false;
}
else if (isVacio(document.frmAltaProy.sDescripcion.value)) {

document.frmAltaProy.sDescripcion.focus();
document.frmAltaProy.sDescripcion.select();
bValido=false;
}
else{
bValido=true;
}
if (!bValido)
alert("Revise los campos obligatorios");
return bValido;
}

</script>


Entonces, me doy cuenta de que siempre el valor de <%=(metod.getIdMetodologia())%> es el último valor de la lista,porque lo he imprimido en este mismo jsp (que no tiene por qué ser ese el valor seleccionado, puede ser cualquiera), pero aún así, me pasa al siguiente jsp el valor null, y no entiendo por qué...

No sé si me habré explicado con suficiente claridad, pero si alguien sabe como ayudarme...

Muchísimas gracias.
  #2 (permalink)  
Antiguo 27/07/2007, 03:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: cómo enviar un valor a través de un formulario oculto

Yo diria mas que es un problema de JavaScript. Pon el formulario que sea de tipo GET en vez de POST y podras ver claramente los parametros que envia.

Si no te esta enviando el que toca, esta claro que hay algon en la funcion validar(id) o en la forma de llamarla que no funciona.

S!
  #3 (permalink)  
Antiguo 27/07/2007, 10:44
 
Fecha de Ingreso: marzo-2007
Mensajes: 34
Antigüedad: 17 años, 1 mes
Puntos: 1
Re: cómo enviar un valor a través de un formulario oculto

Pues no sé si estarás en lo cierto (he probado a cambiar el post por el get, pero no hay diferencia alguna). No creo que sea problema del javascript, ya que utilizo el mismo en otro jsp y me funciona bien, el problema es con el envío del parámetro, ya que tengo el siguiente error:

java.lang.NumberFormatException: For input string: " "
at java.lang.NumberFormatException.forInputString(Unk nown source)


Quiero pensar que lo que yo envío a través del formulario oculto, y que llamo "idMetodologia" es un String, y lo recojo como tal, luego, lo mando a un jsp, que a su vez lo envía como parámetro entero a un javaBean, esto funciona, porque ya lo probé con otro ejemplo.
Mi problema concreto es cómo almacenar el valor que se selecciona de las opciones desplegables, porque tal y como lo tengo escrito arriba, me almacena un null, y yo quiero que me recoja un entero, que es como tengo declarado "idMetodologia".

Muchas gracias y un saludo.
  #4 (permalink)  
Antiguo 27/07/2007, 14:49
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: cómo enviar un valor a través de un formulario oculto

El cambio de GET por POST no es para solucionarlo, es para ver en la URL si el parametro se esta enviando correctamente ya que si pones GET, podras ver el parametro en la URL.

Una vez visto el valor del parametro en la URL, entonces hay que mirar distintas opciones, pero eso es lo primero.

S!

PD: A la hora de depurar, es mejor no pensar "lo probe en otro ejemplo y funciono asi que esto tiene que funcionar". Es mejor partir de incredulo ya que asi no empiezas con prejuicios .
  #5 (permalink)  
Antiguo 28/07/2007, 02:56
 
Fecha de Ingreso: marzo-2007
Mensajes: 34
Antigüedad: 17 años, 1 mes
Puntos: 1
Re: cómo enviar un valor a través de un formulario oculto

Pues ya probé a cambiar el post por el get, y en la URL me salen los valores, pero sólo me ha servido para comprobar que efectivamente, mi variable "idMetodologia" sigue siendo null.
Puedo pensar que realmente existe un problema con la función validar, aunque me parece imposible, porque no podía ser más sencilla... y no se me ocurre otro modo de pasar el valor de la opción elegida al siguiente jsp que la tiene que coger, por que si en vez de poner:
onclick="javascript:validar(<%=(metod.getIdMetodol ogia())%>);"
pongo:
onclick="javascript:validar(<%=(metodologia)%>);"
// que sería la opción que se selecciona, no?
me da un error en la página (me dice que está listo pero con errores en la página...)

Se conoce algún otro modo distinto para pasar parámetros a otro jsp que no sea este (pero para el mismo fin), y que a ser posible, funcione?

Siento ser tan insistente, pero es que me estoy volviendo loca y no sé si es que es un fallo tonto o algo que se me escapa, o que estoy enfocando mal el problema...

Muchas más gracias.
  #6 (permalink)  
Antiguo 28/07/2007, 05:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: cómo enviar un valor a través de un formulario oculto

Buen, si ya sabes que el parametro se envia como null, ya tienes un monton de posibilidades descartadas, y eso es algo.

Yo ahora lo que comprobaria es lo que queda en el HTML en la linea que pone:
Código:
onclick="javascript:validar(X);"
pero estoy hablando del HTML, no de la JSP. Simplemente para asegurarte que <i>metod.getIdMetodologia())</i> devuelve algo.

Si hay algo ahi, entonces es cuestion del JavaScript posterior, si no hay nada ahi, es cuestion de la JSP...

Y asi vas descartando problemas hasta que encuentras el que es.
S!
  #7 (permalink)  
Antiguo 30/07/2007, 02:27
 
Fecha de Ingreso: marzo-2007
Mensajes: 34
Antigüedad: 17 años, 1 mes
Puntos: 1
Re: cómo enviar un valor a través de un formulario oculto

Pues ya está, solucionado!
creando un Java Bean que recogía:
idMetodologia=request.getParameter("metodologia");
ya hace lo que debería.
Muchas gracias por la ayuda GreenEyed, siempre se aprende.
Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 08:18.