verificación verificacion una para marcar hacer formulario ejemplos ejemplo cuál correcto casillas casilla botones java servlets checkboxlist

java - verificacion - Cómo establecer/obtener valores de casillas de verificación de un servlet dinámicamente



marcar casilla html (2)

Esta es más una pregunta lógica. Tengo una casilla de verificación en una página web y almaceno su valor de los parámetros de solicitud de servlet en un objeto booleano (Java). La lógica es que si el parámetro de solicitud para la casilla de verificación no es nulo, haga que el objeto sea verdadero; de lo contrario, es nulo. Cuando se vuelve a llamar a la página, marca la casilla de verificación como "marcada" si su valor almacenado es verdadero.

this.checkbox = (servlet.getParameter("checkbox")!=null && servlet.getParameter("checkbox").contentEquals("on"))?true:null;

El problema comienza cuando persisto ese objeto de casilla de verificación. Primero llene la página con los datos persistentes y luego la llene con los valores del servlet. Si el valor de la casilla de verificación se almacena como verdadero en la base de datos, y el usuario lo desmarca en la página y lo envía, dado que el parámetro de servlet para la casilla de verificación se vuelve nulo, no puedo hacer que la casilla de verificación sea nula. Por lo tanto, la casilla de verificación siempre muestra el valor persistente ya que nunca se sobrescribe. Entonces, ¿alguien puede sugerir algún cambio lógico en cómo estoy llenando el valor del objeto?


La única prueba válida para checkbox es ver si getParameter() devuelve null o no.

Si el valor de retorno es null , está desmarcado, de lo contrario, está marcado.

Tenga en cuenta que ese atributo checked debe estar presente si desea que la casilla de verificación esté marcada en la presentación de la primera página y no debe estar presente en absoluto si desea que se desmarque. El valor del parámetro siempre debe checked , como en el ejemplo a continuación.

<label> <input type="checkbox" id="cb_id" name="cb_id" value="cb_id_value" checked="checked" /> My label </label>

Para este ejemplo, puede tener esta lógica en su código de procesamiento de servlet:

HTTPServetRequest request = ...; boolean cbState = request.getParameter( "cb_id" ) != null;

Tenga en cuenta que si el usuario getParameter la casilla de verificación en el ejemplo anterior, getParameter devolverá "cb_id_value" , pero como generalmente tiene una sola casilla de verificación con un nombre dedicado, no es necesario que verifique el valor.

Por cierto, he notado en su ejemplo que está utilizando servlet para obtener getParameter . Espero que en tu sistema sea un apodo para HTTPServletRequest .


Parece que no está persistiendo en un valor cambiado del campo de casilla de verificación, o tiene cierta confusión en el manejo de los valores nulos que hacen que el campo siempre se muestre como marcado.

Intente asegurarse de que el campo de su base de datos siempre contenga un booleano válido, configurando el campo para que no permita valores nulos y que tenga un valor predeterminado apropiado.

Al enviar el formulario, debe actualizar el valor de la base de datos a " true si la casilla de verificación está marcada y, en caso contrario, " false .

Al mostrar el formulario, debe incluir el atributo "marcado" en la etiqueta solo si el valor de la base de datos es true .