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

checkbox misterioso

Estas en el tema de checkbox misterioso en el foro de Java en Foros del Web. Vamos a ver: tengo una página con un formulario que tiene, entre otras cosas, un checkbox <input type="checkbox" name="guarda_clave" value="true" checked="checked"/> el formulario se manda ...
  #1 (permalink)  
Antiguo 19/05/2012, 09:43
 
Fecha de Ingreso: marzo-2012
Ubicación: Galicia
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 0
checkbox misterioso

Vamos a ver:
tengo una página con un formulario que tiene, entre otras cosas, un checkbox

<input type="checkbox" name="guarda_clave" value="true" checked="checked"/>

el formulario se manda por post a un servlet que hace, entre otras cosas, esto

boolean memoriza = Boolean.getBoolean (req.getParameter("guarda_clave"));
if (! memoriza) {
PrintWriter out = res.getWriter();
out.println("<html>");
out.println("<body>");
out.println("Recogido el checkbox true" + req.getParameter("guarda_clave"));
out.println("</body>");
out.println("</html>");

Pues resulta que da exactamente igual que el atributo del checkbox tenga el valor true o false, siempre se ejecuta el if.

¿Alguien me lo puede explicar, por favor?.
Gracias.
  #2 (permalink)  
Antiguo 20/05/2012, 00:15
Avatar de liloo6retug  
Fecha de Ingreso: junio-2010
Ubicación: Marsella
Mensajes: 109
Antigüedad: 14 años, 5 meses
Puntos: 11
Respuesta: checkbox misterioso

Y SI DEFINES

boolean memoriza = FALSE

Y DESPUES SI RECOGES EL PARAMETRO
  #3 (permalink)  
Antiguo 20/05/2012, 02:10
 
Fecha de Ingreso: marzo-2012
Ubicación: Galicia
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: checkbox misterioso

Gracias, pero no, por lo visto no está funcionando esto:

boolean memoriza = Boolean.getBoolean (req.getParameter("guarda_clave"));

aunque guarda_clave tenga el value a true, memoriza sigue a false.

Y aunque haga lo que dices de inicializar memoriza a false, no cambia el valor.

¿Más ideas?, por favor.
  #4 (permalink)  
Antiguo 20/05/2012, 04:13
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: checkbox misterioso

Lo que había puesto antes estaba mal, es lo que tiene contestar recién levantado.

¿Qué es lo que te aparece en "Recogido el checkbox true" + req.getParameter("guarda_clave")) ? ¿True y false, o solo false?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Última edición por Xerelo; 20/05/2012 a las 07:58
  #5 (permalink)  
Antiguo 20/05/2012, 11:47
 
Fecha de Ingreso: marzo-2012
Ubicación: Galicia
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: checkbox misterioso

Aparece truefalse.

Entra en el if porque por lo visto memoriza tiene el valor false aunque el value del checkbox es true. No lo entiendo ¿?
  #6 (permalink)  
Antiguo 20/05/2012, 13:01
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: checkbox misterioso

Cuando envías el formulario, ¿la casilla del checkbox está marcada o no?

Cuando no está marcada, no envía el correspondiente par clave-valor, sólo lo hace en caso de que esté marcada.

Si no es eso, no se me ocurre que pueda ser.
  #7 (permalink)  
Antiguo 20/05/2012, 13:42
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: checkbox misterioso

Tu problema es el siguiente

http://docs.oracle.com/javase/6/docs...va.lang.String)

Cita:
Returns true if and only if the system property named by the argument exists and is equal to the string "true". A system property is accessible through getProperty, a method defined by the System class.
Es decir, no crea una boolean, sino que busca si existe y el valor de una propiedad del sistema. En tucaso busca la supuesta propiedad del sistema "true" que no existe.

Lo único que tienes que hacer es

boolean memoriza = "true".equals(req.getParameter("guarda_clave") );

que te sirve para cualquier valor que le quieras dar al check

o usar parseBoolean(req.getParameter("guarda_clave")) pero solo puede tener valor true.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #8 (permalink)  
Antiguo 21/05/2012, 01:13
 
Fecha de Ingreso: mayo-2012
Ubicación: tegucigalpa
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: checkbox misterioso

Cita:
Iniciado por ollomol Ver Mensaje
Vamos a ver:
tengo una página con un formulario que tiene, entre otras cosas, un checkbox

<input type="checkbox" name="guarda_clave" value="true" checked="checked"/>

el formulario se manda por post a un servlet que hace, entre otras cosas, esto

boolean memoriza = Boolean.getBoolean (req.getParameter("guarda_clave"));
if (! memoriza) {
PrintWriter out = res.getWriter();
out.println("<html>");
out.println("<body>");
out.println("Recogido el checkbox true" + req.getParameter("guarda_clave"));
out.println("</body>");
out.println("</html>");

Pues resulta que da exactamente igual que el atributo del checkbox tenga el valor true o false, siempre se ejecuta el if.

¿Alguien me lo puede explicar, por favor?.
Gracias.
Amigo saludos ojala este comentario ayude.
Primero: el checkbox, cuando lo marcas y lo envias es true, pq lo definis, pero si no lo marcas en null, segundo: para obtenerlo en el siguiente jsp, crea una variable de tipo string valor = request.getParameter("checkbox"); y si quieres condicionar eso haslo asi
If(valor.equals("true")){
Has esto } else { has lo otro }, ojala te sirva saludos.
  #9 (permalink)  
Antiguo 21/05/2012, 05:55
 
Fecha de Ingreso: marzo-2012
Ubicación: Galicia
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: checkbox misterioso

¡ Perfecto ¡

Muchas gracias a todos, pero especialmente a Xerelo por su documentada y acertada explicación.

Etiquetas: checkbox, formulario
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




La zona horaria es GMT -6. Ahora son las 13:55.