img*_*gr8 7 java servlets checkboxlist
这更像是一个逻辑问题.我在网页上有一个复选框,我将其值从servlet请求参数存储在一个布尔对象(Java)中.逻辑是,如果复选框的请求参数不为null,则使对象为true,否则为null.再次调用页面时,如果其存储值为true,则将复选框标记为"已选中".
this.checkbox = (servlet.getParameter("checkbox")!=null && servlet.getParameter("checkbox").contentEquals("on"))?true:null;
Run Code Online (Sandbox Code Playgroud)
当我坚持该复选框对象时,问题就开始了.我首先使用持久化数据填充页面,然后使用servlet值填充它.如果复选框值在数据库中存储为true,并且用户在页面上取消选中它并提交它,因为复选框的servlet参数变为null,我无法使复选框为null.因此,复选框始终显示持久值,因为它永远不会被覆盖.所以有人可以建议我如何填充对象值的逻辑变化?
Ale*_*yak 17
复选框的唯一有效测试是查看是否getParameter()返回null.
如果返回值null未选中,则检查它.
请注意,checked如果您希望在第一页演示文稿中选中该复选框,则该属性应该存在,如果您不想选中该复选框,则不应该存在该属性.参数值应始终为checked,如下例所示.
<label>
<input
type="checkbox"
id="cb_id"
name="cb_id"
value="cb_id_value"
checked="checked"
/>
My label
</label>
Run Code Online (Sandbox Code Playgroud)
对于此示例,您可以在servlet处理代码中使用此逻辑:
HTTPServetRequest request = ...;
boolean cbState = request.getParameter( "cb_id" ) != null;
Run Code Online (Sandbox Code Playgroud)
请注意,如果用户在上面的示例中选中了复选框,getParameter则会返回"cb_id_value",但由于您通常只有一个带有专用名称的复选框,因此您无需检查该值.
顺便说一句,我注意到你的榜样,你正在使用servlet到getParameter.我希望在你的系统中它是一个绰号HTTPServletRequest.