0

我在这里有一个非常混乱的情况。

<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”。因此,当我加载 edit.jsp 页面时,我看到该值已选中。现在,我想处理我感到困惑的未选中复选框的情况。当我取消选中该框时,提交的值为空,我很困惑处理这种情况。如果未选中复选框,如何提交默认值。

4

3 回答 3

1

虽然这个问题是 3 年前提出的,但我正在为未来的观众添加一个答案。

如果未选中复选框,则不会发送。因此,如果未检查devang将其值设置为“开/关”的答案将无济于事-它将始终返回 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;
}

无论服务器处理如何,这构成了完整的解决方案。

于 2015-11-27T10:28:01.077 回答
0

使用剃刀语法:

<input type="checkbox" name="xxx" value="xxx" @if(condition == true) {<text>checked="checked"</Text>}>
于 2012-09-30T11:15:22.160 回答
0

据我记得,添加 value 属性并将其设置为您想要的值应该可以工作。下面,value="on"补充。

<input type="checkbox" id="box1" name="box1" value="on" 
  <% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %>    
    checked="checked"  
  <% } %> >
于 2012-08-04T16:33:17.687 回答