我有以下代码:
<td> <html:checkbox name="userForm" property="isActive" /></td>
在表单中我有一个名为isActive
的{{1}}类型的属性,我如何获得检查值?如果选中,我会收到char
之类的符号。
我正在使用userform.getIsActive()。我哪里错了?我想要'y'或'n'值。
答案 0 :(得分:3)
默认情况下,当提交包含复选框的HTML表单时,如果选中该复选框,则发送的值为字符串“ on ”,如果未选中,则表示没有字段表格数据中的所有复选框。所以你要测试一个值的存在,或者没有一个值。
根据{{3>,使用value
属性(对标准HTML标记和Struts html:checkbox
标记都有效),您可以更改选中复选框时发送的值}})。如果未选中复选框,则不能使用标准HTML指定应发送值。
我有点困惑你说你得到了“回”。 Struts文档说相应的属性是boolean
,而不是String
。
答案 1 :(得分:1)
如果表单上的isActive属性是char类型,则它只能包含一个字符。也许这就是为什么“on”值在你的情况下被截断为“o”。
无论如何,我建议你在表单上将属性数据类型更改为boolean。这种方式更简单,更合乎逻辑。每当您想要使用表单中的值时,如果您必须以该确切格式获取值,您可以非常轻松地在Java代码中执行(form.getIsActive()?"y":"n")
或类似的操作。希望这会有所帮助。
答案 2 :(得分:1)
为了弥补HTML表单复选框的奇怪行为,struts 1.x中的静态表单bean给出了reset方法。
即使在web表单上有复选框,如果表单bean在请求范围内,则表单bean类中不需要reset方法。
如果form-bean在会话范围内(默认情况下)并且其对应的Web表单有复选框,则formbeans中需要重置方法。