有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java句柄已选中和未选中复选框

我这里的情况很混乱

<tr>
    <td>
        <input type="checkbox" id="box1" name="box1" <% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %> checked="checked"  <% } %> >
    </td>
    <td><label>Box</label></td>
</tr>

在portlet中。xml默认情况下,我已将box1值设置为“on”。所以当我加载编辑时。jsp页面我看到的值是选中的。现在,我想处理我感到困惑的未选中复选框的情况。当我取消选中该框时,提交的值为空,我对处理这种情况感到困惑。如果复选框未选中,如何提交默认值


共 (3) 个答案

  1. # 1 楼答案

    就我所记得的,添加value属性并将其设置为您想要的值应该是可行的。下面添加了value="on"

    <input type="checkbox" id="box1" name="box1" value="on" 
      <% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %>    
        checked="checked"  
      <% } %> >
    
  2. # 2 楼答案

    使用razor语法:

    <input type="checkbox" name="xxx" value="xxx" @if(condition == true) {<text>checked="checked"</Text>}>
    
  3. # 3 楼答案

    虽然这个问题是三年前提出来的,但我还是为未来的观众添加了一个答案

    如果复选框未选中,则不会发送该复选框。因此devang的答案是,如果未选中,则将其值设置为“on/off”,这不会有帮助-它将始终返回NULL

    我找到的最简单的解决方案是添加一个具有相同名称的隐藏字段,如果未选中该复选框,将使用该字段

    例如,在您的代码中,解决方案可以是

    <tr>
        <td>
            <input type="checkbox" id="box1" name="box1" value="1" <% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %> checked="checked"  <% } %> >
        </td>
        <td>
            <input type="checkbox" id="box1_hidden" name="box1" value="0" >
        </td>
    </tr>
    

    上面的代码取决于服务器对参数的处理,因为浏览器将发送这两个参数。如果未选中该复选框,则隐藏字段的值将按原样使用(因为浏览器不发送null参数)。但是,如果选中复选框,事情会变得麻烦,因为现在浏览器会看到两个值对应于相同的名称字段

    例如,Java只提供具有特定名称的字段的第一个值。另一方面,PHP将最后一个值作为要使用的值

    因此,您需要执行一个额外的步骤并调用JavaScript。其思想是根据选中的条件禁用隐藏的输入

    if(document.getElementById("box1").checked) {
         document.getElementById('box1_hidden').disabled = true;
    }
    

    这构成了完整的解决方案,与服务器处理无关