gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:09:29 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com