我想验证是否选中了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:radio
,s:select
或s:checkbox
的值。我使用s:radio
和s:select
成功完成的其他操作。
有没有人有任何想法?
答案 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>