取消选中复选框时,struts复选框标记提交了什么值

PRP*_*PRP 5 checkbox jsp struts-1

我遇到了这种情况.

class MyForm extends IdSelectionForm {
  private Boolean approveIt = true;
  .....
}
Run Code Online (Sandbox Code Playgroud)

我的JSTL表格由

<html:checkbox property="approveIt" styleId="style1" value="true"/>
Run Code Online (Sandbox Code Playgroud)

当我选择复选框并提交时.在struts动作中,我获得了该字段的真实值集.当我取消选中并提交时再次.然后我也得到了真正的价值.我想知道它是否具有默认值.当我取消选中时,它是否应该被错误覆盖.

JB *_*zet 5

首先,<html:checkbox>Struts标签不是JSTL标签.此标记只生成类型为复选框的标准HTML输入.并且HTML复选框在检查时将其值作为参数值发送,并且在未选中时不发送任何参数.

因此,由于表单字段的默认值为true:

  • 如果选中该复选框,Struts将将其设置为true
  • 如果取消选中该复选框,Struts将不会将其设置为任何内容,因此将保留其默认值:true

approveIt属性的默认值应为false.这样,如果取消选中该复选框,它将保持其默认值(false),这是正确的.如果选中该复选框,则将其设置为true,这也是正确的.