2010-04-20 46 views
0

我有以下代码:Struts的HTML:复选框查询

<td> <html:checkbox name="userForm" property="isActive" /></td> 

在我有一个名为char类型的isActive财产形式,我怎么会得到选中的值?我收到一些符号,如o,如果选中。

我正在使用userform.getIsActive()。我哪里错了?我想要'y'或'n'值。

+0

添加了struts标记,以便Struts人员注意到它。 – 2010-04-20 13:50:56

回答

3

默认情况下,当包含一个复选框HTML表单提交,如果复选框被选中的是被发送是字符串“”的值,如果不是检查有没有现场为复选框在所有中的表单数据。所以你要测试一个值的存在,或者一个人的缺席。

您可以更改时复选框通过使用value属性检查(两者在标准的HTML标记和一个Struts html:checkbox标签的工作原理,根据Struts docs)被发送什么样的价值。您不能使用标准HTML指定在未选中复选框时应发送值。

我对你说“你回来了”有点困惑。 Struts文档说相应的属性将是boolean,而不是String

+0

但isgetActive正在返回我只是'ö'不上。 – sarah 2010-04-20 13:45:15

+0

@sarah:这很奇怪,文档甚至重申'value'的默认值:http://struts.apache.org/1.x/struts-taglib/tlddoc/html/checkbox.html但是不应该无论如何,它会返回为布尔值,而不是字符串?这就是文档所说的。 (我不是一个Struts人,事实上,起初我错过了这个和Struts有关的东西。) – 2010-04-20 13:47:03

1

如果表单上的isActive属性是char类型,则它只能包含一个字符。也许这就是为什么在你的情况下,“on”值被截断为“o”。

在任何情况下,我建议您将属性数据类型更改为表单上的布尔值。这样更简单,更合乎逻辑。无论何时您想使用表单中的值,只要必须以该确切格式获取值,您就可以非常轻松地在您的Java代码中执行(form.getIsActive()?"y":"n")或类似的操作。希望这可以帮助。

1

为了弥补HTML表单的复选框的奇怪行为,在struts 1.x中为静态表单bean提供了reset方法。

即使Web窗体中有复选框,如果form-b​​ean在请求范围内,form-b​​ean类中也不需要复位方法。

如果表单bean处于会话范围(默认情况下)并且其相应的Web表单有复选框,则formbeans中需要重置方法。