LoadableDetachableModel和Ajax按钮(Wicket)

时间:2011-05-14 19:06:32

标签: database forms wicket

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

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

如何在下拉列表中显示onSubmit()方法中的更改?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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