【问题标题】:What value is submitted by struts checkbox tag when checkbox is unselected取消选中复选框时,struts复选框标记提交什么值
【发布时间】:2013-05-31 21:34:01
【问题描述】:

我遇到了这种情况。

class MyForm extends IdSelectionForm {
  private Boolean approveIt = true;
  .....
}

我的 JSTL 表单包括

<html:checkbox property="approveIt" styleId="style1" value="true"/>

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

【问题讨论】:

    标签: jsp checkbox struts-1


    【解决方案1】:

    首先,&lt;html:checkbox&gt; 是一个 Struts 标签而不是 JSTL 标签。此标记仅生成复选框类型的标准 HTML 输入。 HTML 复选框在选中时将其值作为参数值发送,而在未选中时不发送任何参数。

    所以,由于表单字段的默认值为 true:

    • 如果复选框被选中,它将被 Struts 设置为 true
    • 如果未选中该复选框,则 Struts 不会将其设置为任何内容,因此将保持其默认值:true

    approveIt 属性的默认值应为 false。这样,如果未选中该复选框,它将保持其默认值(false),这是正确的。并且如果勾选了复选框,就会设置为true,这也是正确的。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。 即使将布尔变量初始化为 false,问题仍然存在。

      问题是我的作用域是session

      将范围更改为 request 后,一切都按预期工作。

      【讨论】:

        【解决方案3】:

        value 属性包含标签使用的值,并且与checkbox 状态无关,如果它是checked 或未选中。

        提交时,仅通过选中的复选框。然后 Struts 捕获它们并按名称设置相应的 bean 属性。

        如果您内联或在构造函数中按初始化值,则只有checked 复选框将通过设置 bean 属性值来更新。您无法更新未选中状态。

        因此,在填充表单之前不要设置任何值。如果未设置该值,则 Struts 将该值视为false 并从标记中删除checked。这等效于将值显式设置为false

        true 值相反的行为,但复选框没有其他值的状态,例如null,而不是truefalse,对应于复选框checked 或未选中的状态(没有@ 987654333@ 属性)。

        【讨论】:

          猜你喜欢
          • 2014-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-27
          • 2021-12-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多