假设我有一个包含复杂元素的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
答案 0 :(得分:7)
请查看此Wicket in Action文章中建议的方法:Repainting only newly-created repeater items via ajax
当您想通过AJAX添加新元素时,问题在于Wicket重新绘制它的新添加项目没有根标记标记。
引用文章:
诀窍是给Wicket一个标签,通过Ajax重绘,这可能是 完成以下工作:
- 创建标记标记以表示新项目
- 将其添加到标记中的正确位置
- 让Wicket通过Ajax重新绘制
醇>
本文中的代码基本上是在ajax提交按钮的回调中预设了一些javascript,它实际上创建了带有适当ID的标记,以便稍后在将其添加到AjaxRequestTarget
时能够替换该元素。