【问题标题】:How can I have previous value of checkbox in Spring?如何在 Spring 中获得以前的复选框值?
【发布时间】:2009-07-30 09:13:51
【问题描述】:

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

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

【问题讨论】:

  • 动作在服务器端还是客户端执行?它是基于 ajax 的操作还是页面提交?
  • Arun,我想在服务器端有这个,

标签: java spring jsp spring-mvc


【解决方案1】:

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

或者当您有一个偏好页面,其中复选框位于其中时,您必须存储偏好页面的状态并检查您是否在内部更改了状态。

【讨论】:

    【解决方案2】:

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

    如果是,他们应该输出一个隐藏字段,其中包含 HTML 中复选框的现有值,并在其前面带有下划线“_”。 Spring 这样做是为了帮助确定复选框是未选中还是未提交。

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

    见Spring MVC 2.5 Checkbox tag

    【讨论】:

      【解决方案3】:

      要正确执行此操作,您需要在不依赖客户端记录旧值的情况下进行比较,因为这可能会导致篡改。

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

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

      我发现SimpleFormController cheat sheet 对找出方法的执行顺序非常有帮助。它也应该可以帮助你。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-05
        • 2010-12-14
        • 1970-01-01
        • 2017-12-17
        • 2010-10-05
        相关资源
        最近更新 更多