Wicket 我可以向RepeatingView添加元素而不刷新后者吗?

Wicket 我可以向RepeatingView添加元素而不刷新后者吗?,wicket,Wicket,假设我有一个包含复杂元素(例如包含小程序)的RepeatingView。我想用ajax在RepeatingView中添加(或删除)一个新元素,但我不想刷新所有元素,因为这会导致小程序重新加载,这显然是我不想要的 我正在使用wicket 1.4.18 仅向目标添加我要添加的元素不起作用,我得到: 尝试执行标记更新时未找到id为(…)的组件。确保您在试图更新其标记的组件上调用了component.setOutputMarkupId(true)请查看此Wicket in Action文章中建议的方法:

假设我有一个包含复杂元素(例如包含小程序)的RepeatingView。我想用ajax在RepeatingView中添加(或删除)一个新元素,但我不想刷新所有元素,因为这会导致小程序重新加载,这显然是我不想要的

我正在使用wicket 1.4.18

仅向目标添加我要添加的元素不起作用,我得到:
尝试执行标记更新时未找到id为(…)的组件。确保您在试图更新其标记的组件上调用了component.setOutputMarkupId(true)

请查看此Wicket in Action文章中建议的方法:

当您想通过AJAX添加新元素时,问题在于没有根标记用于Wicket重新绘制新添加的项

引述该条:

诀窍是给Wicket一个标签,以便通过Ajax重新绘制,而Ajax可以 通过执行以下操作完成:

  • 创建标记以表示新项
  • 将其添加到标记中的正确位置
  • 让Wicket通过Ajax重新绘制它

  • 本文中的代码基本上在ajax submit按钮的回调中预先添加了一些javascript,这些javascript实际上创建了具有适当id的标记,以便Wicket能够在以后将该元素添加到
    AjaxRequestTarget

    时替换该元素。您已经尝试过什么了吗?似乎您可以将新组件添加到AjaxRequestTarget而不是整个列表中,但我没有尝试。是的,我已经尝试过了,但不起作用,在尝试执行标记更新时找不到id为(…)的组件。确保您在试图更新其标记的组件上调用了component.setOutputMarkupId(true)。我花了很长时间才在Wicket in Action网站上找到它。你今天一直在打我;)好吧,不错,我试试这个。我想删除一个元素也可以做类似的事情。@Adam也看看这篇文章:。这将帮助您构建一个执行原子表单更新的
    RepeatingView
    。也就是说,不在每次中间添加或删除中更新
    模型
    ,只在提交表单时更新。@Xavi,实际上我在这里不使用表单,但是感谢第二篇文章,对于其他情况可能会有用。第一篇文章中的解决方案非常有效!我已经添加了删除到它,并有确切的我想要的。在此之后,我接受你的回答:)