java - ListView 在提交之前从外部源修改

标签 java wicket wicket-6

我有一个 ListView ,在此示例中包含 5 行。 ListView 位于表单中,并具有用于删除行的 AjaxSubmitLink。

加载的数据来自可加载的可分离模型,该模型从数据库加载行。

用户 A:渲染列表,加载所有 5 行并带有删除按钮。

用户 B:在另一台计算机上加载相同的列表并删除第 3 行。

用户 A:仍然可以看到所有 5 行并删除第 4 行。模型重新附加,而不是删除第 4 行,而是删除第 5 行。

Form<Void> form = new Form<Void>("form");
form.setOutputMarkupId(true);
add(form);

ListView<Data> list = new ListView<Data>("list", detachableDataList)
{
        private static final long serialVersionUID = 1L;

        protected void populateItem(final ListItem<Data> item)
        {
            AjaxSubmitLink delete = new AjaxSubmitLink("delete")
            {
                protected void onSubmit(AjaxRequestTarget target, Form<?> form)
                {
                    Data data = item.getModelObject();
                    DB.delete(data.getPk());
                    target.add(form);
                }
            }
        }
}
form.add(list);

尝试尝试使用setReuseItems(true) 尝试使用 RefreshingView 尝试覆盖 getListItemModel

这些都不起作用

编辑以求清晰

Item 1 [delete]
Item 2 [delete]
Item 3 [delete]
Item 4 [delete]
Item 5 [delete]

当我在项目 4 上单击“删除”时,它会应用于项目 5,因为项目 3 已被其他用户删除。

最佳答案

您拥有数据,因此请使用它。

protected void populateItem(ListItem<Data> item)
    {
        Data data = item.getModelObject();
        final Serializable id = data.getId(); // the primary key
        AjaxSubmitLink delete = new AjaxSubmitLink("delete")
        {
            protected void onSubmit(AjaxRequestTarget target, Form<?> form)
            {
                DB.delete(id);
                target.add(form);
            }
        }
    }

关于java - ListView 在提交之前从外部源修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32125978/

相关文章:

java - JDesktopPane.setOpaque(false) 加上 JInternalFrame 的使用会抑制包含 JFrame 的关闭

java - Wicket - DropDownChoice - 选项的标题(工具提示)

java - Wicket 口 AjaxSubmitLink 的行为是否可以像 ResourceLink onSubmit() 一样?

forms - Wicket 口表格 "ServletRequest does not contain multipart content"

java - 没有关键工作volatitle,如何实现DCL?

java - Android:如何知道运行时小部件应用了哪种样式

java - Wicket 6.15 评级面板图像未加载

java - Wicket:ListView 中的下拉选项没有附加 onClick 行为

java - 为apache QPID创建 keystore 和信任库

Maven 无法解析我可以在存储库中看到的 jar