选中验证struts2复选框

时间:2013-08-15 16:39:41

标签: validation checkbox struts2

我想验证是否选中了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 ,因为字段的setter永远不会被调用。如果我添加一个名为test的字符串,其中包含一个getter / setter和一个s:textfield 然后选择了该值,但我无法在此操作中获得s:radios:selects:checkbox的值。我使用s:radios:select成功完成的其他操作。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

如果要从fieldValue属性接收值作为String,则使您的agreedtc变量String类型不是布尔值。然后你现在的验证应该有效。

但是如果你想让它成为你的动作类中的布尔值,那么从fieldValue标签中删除<s:checkbox>属性并将你的验证表达式更改为:

<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>