Struts 1 中取消选中复选框时,<html:checkbox> 标签提交什么值?

问题描述 投票:0回答:3
jsp checkbox struts-1
3个回答
8
投票

首先,

<html:checkbox>
是Struts标签而不是JSTL标签。该标签只是生成一个复选框类型的标准 HTML 输入。 HTML 复选框在选中时将其值作为参数值发送,而在未选中时不发送任何参数。

因此,由于表单字段的默认值为 true:

  • 如果选中该复选框,Struts 会将其设置为 true
  • 如果未选中该复选框,Struts 不会将其设置为任何内容,因此将保留其默认值:true

approveIt
属性的默认值应该是 false。这样,如果未选中该复选框,它将保留其默认值 (false),这是正确的。如果选中该复选框,它将被设置为 true,这也是正确的。


2
投票

我也遇到了同样的问题。 即使布尔变量初始化为 false 后问题仍然存在。

问题是我的范围是

session

将范围更改为

request
后,一切都会按预期进行。


2
投票

value
属性包含标签使用的值,并且与
checkbox
状态无关(如果它是
checked
或未选中)。

提交时,只有选中的复选框才会通过。然后 Struts 捕获它们并按名称设置相应的 bean 属性。

如果您在内联或构造函数中预初始化值,则只有

checked
复选框将通过设置 bean 属性值进行更新。您无法更新未选中的状态。

因此,在填充表单之前不要设置任何值。如果未设置该值,则 Struts 会将该值视为

false
并从标签中删除
checked
。这与显式将值设置为
false
等效。

与值

true
相反的行为,但复选框没有其他值的状态,如
null
而不是
true
false
对应于复选框
checked
或未选中状态(没有
checked
)属性)。

© www.soinside.com 2019 - 2024. All rights reserved.