【问题标题】:Validate struts2 checkbox is checked验证 struts2 复选框被选中
【发布时间】:2013-08-15 16:39:41
【问题描述】:

我想验证是否选中了 Struts2 复选框(布尔属性),但此时验证总是失败。这是我所拥有的:

<s:checkbox key="agreetc" fieldValue="agreedtc"
            label="I have read and agree to the terms and conditions"/>

<field name="agreetc">
    <field-validator type="fieldexpression">
        <param name="expression">agreetc == true</param>
        <message>You must agree to the terms and conditions</message>
    </field-validator>
</field>

动作中agreetc 的值始终为false,因为该字段的设置器永远不会被调用。如果我添加一个名为 test 的字符串,带有一个 getter/setter 和一个 s:textfield 然后选择该值,但在此操作中我无法从s:radios:selects:checkbox 获取值。我使用s:radios:select 成功完成的其他操作。

有人有什么想法吗?

【问题讨论】:

  • 我觉得很好。失败是什么意思?总是对或错或其他......?
  • 我对此进行了更多研究,似乎 Struts2 根本没有收到任何复选框的值 - 它始终为 null,这就是验证失败的原因。在行动中我有'私人布尔同意;'用它的 getter 和 setter。该操作会毫无问题地拾取其他几个表单字段,但不是协议字段。
  • 对不起,一直是false,请忽略我之前的评论。
  • Doahh,不要在 cmets 中发布代码,而是编辑您的问题并添加详细信息。

标签: validation checkbox struts2


【解决方案1】:

如果您想从fieldValue 属性接收值作为字符串,则使您的agreedtc 变量字符串类型不是布尔值。那么你现在的验证应该可以工作了。

但是,如果您希望它在您的操作类中成为布尔值,则从 &lt;s:checkbox&gt; 标记中删除 fieldValue 属性并将您的验证表达式更改为:

<field name="agreetc">
    <field-validator type="fieldexpression">
        <param name="expression">agreetc</param>
        <message>You must agree to the terms and conditions</message>
    </field-validator>
</field>

【讨论】:

  • 这工作正常,但我也愚蠢地将 JSP 中的 agreetcagreedtc 作为没有帮助的操作属性!感谢所有评论的人。
  • @Doahh 如果它没有解决你的问题,你为什么接受它?
  • 如果问题存在于问题中,为什么您会强烈反对答案?
  • @AndreaLigios:我相信这是报复投反对票...因为有人认为我投反对票他的另一个问题,我没有。 stackoverflow.com/q/18270644/1700321
  • @Roman C 我说它确实解决了问题,但我还需要解决另一个问题才能看到给定的公认解决方案实际上是正确的解决方案。 Aleksandr M 是正确的,如果我只修复了 action 属性中的错字,如果没有您提供的解决方案,验证仍然会失败 - 再次感谢。
猜你喜欢
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
相关资源
最近更新 更多