我有以下代码:Struts的HTML:复选框查询
<td> <html:checkbox name="userForm" property="isActive" /></td>
在我有一个名为char
类型的isActive
财产形式,我怎么会得到选中的值?我收到一些符号,如o
,如果选中。
我正在使用userform.getIsActive()。我哪里错了?我想要'y'或'n'值。
我有以下代码:Struts的HTML:复选框查询
<td> <html:checkbox name="userForm" property="isActive" /></td>
在我有一个名为char
类型的isActive
财产形式,我怎么会得到选中的值?我收到一些符号,如o
,如果选中。
我正在使用userform.getIsActive()。我哪里错了?我想要'y'或'n'值。
默认情况下,当包含一个复选框HTML表单提交,如果复选框被选中的是被发送是字符串“上”的值,如果不是检查有没有现场为复选框在所有中的表单数据。所以你要测试一个值的存在,或者一个人的缺席。
您可以更改时复选框通过使用value
属性检查(两者在标准的HTML标记和一个Struts html:checkbox
标签的工作原理,根据Struts docs)被发送什么样的价值。您不能使用标准HTML指定在未选中复选框时应发送值。
我对你说“你回来了”有点困惑。 Struts文档说相应的属性将是boolean
,而不是String
。
但isgetActive正在返回我只是'ö'不上。 – sarah 2010-04-20 13:45:15
@sarah:这很奇怪,文档甚至重申'value'的默认值:http://struts.apache.org/1.x/struts-taglib/tlddoc/html/checkbox.html但是不应该无论如何,它会返回为布尔值,而不是字符串?这就是文档所说的。 (我不是一个Struts人,事实上,起初我错过了这个和Struts有关的东西。) – 2010-04-20 13:47:03
如果表单上的isActive属性是char类型,则它只能包含一个字符。也许这就是为什么在你的情况下,“on”值被截断为“o”。
在任何情况下,我建议您将属性数据类型更改为表单上的布尔值。这样更简单,更合乎逻辑。无论何时您想使用表单中的值,只要必须以该确切格式获取值,您就可以非常轻松地在您的Java代码中执行(form.getIsActive()?"y":"n")
或类似的操作。希望这可以帮助。
为了弥补HTML表单的复选框的奇怪行为,在struts 1.x中为静态表单bean提供了reset方法。
即使Web窗体中有复选框,如果form-bean在请求范围内,form-bean类中也不需要复位方法。
如果表单bean处于会话范围(默认情况下)并且其相应的Web表单有复选框,则formbeans中需要重置方法。
添加了struts标记,以便Struts人员注意到它。 – 2010-04-20 13:50:56