【问题标题】:LoadableDetachableModel and an Ajax button (Wicket)LoadableDetachableModel 和一个 Ajax 按钮 (Wicket)
【发布时间】:2011-05-14 19:06:31
【问题描述】:

我有一个类似于 LutherBaker here 描述的问题,即在 Ajax 按钮的 onSubmit() 方法之前调用了 LoadableDetachableModel 的加载方法。是否有类似于 LoadableDetachableModel 但在 onSubmit 方法之后调用的模型?

我的问题:提交表单时,我更新了数据库中的一条记录。但是,此更新在具有 LoadableDetachableModel 的下拉列表中不可见(在 onSubmit() 调用后刷新 - 它已添加到 target),因为此 LDM 是在表单的 onSubmit() 方法之前加载的。

如何使 onSubmit() 方法中所做的更改在下拉列表中可见?

【问题讨论】:

    标签: database forms wicket


    【解决方案1】:

    它是否适用于不可拆卸的模型?组件是否有markup id rendered out

    【讨论】:

    • 它确实适用于每个 getObject() 调用都会查看数据库的模型。
    • 所以明确分离 LDM 不是您的选择吗?
    • 为什么?它仍然可以防止在会话上下文中存储不必要的数据。更改数据库值后必须重新加载它会很好。但也许有人知道更好的方法......
    【解决方案2】:

    LoadableDetachableModel 有一个缓存,以避免额外的数据库请求等。 如果在触发 onSubmit 事件之后但在更新记录之前加载 LDM(调用它的 load() 方法),则需要通过分离它来重新加载 LDM,以便在 ajax 时重新加载新数据目标被渲染。

    所以尝试在模型上调用 detach(),在 onSubmit() 方法的末尾。

    如果这不起作用,那么还要验证您的数据库命令是否在预期的时间发送。例如,如果您使用某些 JPA 刷新模式,则某些数据库命令可能会延迟到事务结束,这可能会导致在更新查询发生之前使用读取查询重新加载数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      相关资源
      最近更新 更多