我可以在不刷新后者的情况下向RepeatingView添加元素吗?

时间:2011-10-18 12:54:06

标签: wicket

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

我正在使用wicket 1.4.18

添加到仅定位我想要添加的元素,不起作用,我得到: Component with id (...) was not found while trying to perform markup update. Make sure you called component.setOutputMarkupId(true) on the component whose markup you are trying to update

1 个答案:

答案 0 :(得分:7)

请查看此Wicket in Action文章中建议的方法:Repainting only newly-created repeater items via ajax

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

引用文章:

  

诀窍是给Wicket一个标签,通过Ajax重绘,这可能是   完成以下工作:

     
      
  1. 创建标记标记以表示新项目
  2.   
  3. 将其添加到标记中的正确位置
  4.   
  5. 让Wicket通过Ajax重新绘制
  6.   

本文中的代码基本上是在ajax提交按钮的回调中预设了一些javascript,它实际上创建了带有适当ID的标记,以便稍后在将其添加到AjaxRequestTarget时能够替换该元素。