我怎样才能在Spring中拥有复选框的先前值?

时间:2009-07-30 09:13:51

标签: java spring jsp spring-mvc

是否可以将复选框的先前值与新值一起使用?

我的问题是,我必须执行一些代码,只有当checkbox的值为true时,如果它已经为真,那么我不想再次执行相同的操作。 目前我正在做的是,对于每个复选框我也有以前的价值持有者。如果仅更改了值,则执行操作(并且为真),并将先前值持有者的值设置为新值。

3 个答案:

答案 0 :(得分:0)

您可以向复选框添加更改侦听器。当复选框更改状态时,您可以直接调用特殊代码。

或者,如果您有一个首选项页面,其中包含复选框,您必须存储首选项页面的状态,并检查是否已更改其中的状态。

答案 1 :(得分:0)

您使用的是spring mvc JSP tablib还是velocity / freemarker宏?

如果您是,他们应该使用HTML前面的复选框的现有值输出一个隐藏字段,前面带有下划线“_”。 Spring这样做有助于确定复选框是未选中还是未提交。

您应该能够为此目的使用此隐藏字段,即您可以检查隐藏字段的值,并将其与实际的复选框字段值进行比较。

请参阅Spring MVC 2.5 Checkbox tag

答案 2 :(得分:0)

为了做到这一点,您需要进行比较,而不依赖于客户端来记录旧值,因为这可能会导致篡改。

在提交时,Spring MVC会在使用从客户端提交的新值更新命令之前重建旧版本的命令。在绑定阶段开始之前,您需要在某处保存旧值。

为此,在formBackingObject方法(在POST提交后再次调用)中,将值的副本放在请求对象中。然后在onSubmit方法中,您可以从请求中检索值以进行比较。您也可以将其记录在命令的其他字段中。

我发现这个SimpleFormController cheat sheet对于确定方法的执行顺序非常有帮助。它也可以帮助你。