Wicket用ajax替换面板失败,出现MarkupNotFoundException

时间:2013-11-11 22:40:06

标签: ajax wicket

页面标记

<div wicket:id="stepPanel" />

标签,当页面首次加载时,它的效果非常好

add(new MyFirstPanel("stepPanel"));

工作正常。但是当我触发Ajax事件并请求重绘

addOrReplace(new MySecondPanel("stepPanel"));
target.add(MyPage.this);

我收到以下错误

Last cause: Failed to find markup file associated. MyFirstPanel: [MyFirstPanel [Component id = stepPanel]]

请注意,它会尝试找到错误的标记(应该为MySecondPanel查找标记)并且无论之前是否成功都会失败!

我使用反射实例化面板,但这可能是一个问题吗?没有例外。

Anwser: 实际上它是别的东西 - 我注意到我的一个AjaxSubmitLinks引用了一个不再放在标记中的表单......所以不管你做什么都记得不要留下那个引用。

2 个答案:

答案 0 :(得分:1)

您在更换Panel后添加MyPage,导致MyPage重新渲染。 关于如何替换面板here有一个很好的例子。

答案 1 :(得分:0)

是的,您可以通过反射调用面板。我不清楚你在这里尝试做什么,但是如果你想要的话,可以用AjaxSelfUpdatingTimerBehavior附上你的面板,并定义在给定时间内更新该组件的持续时间。

希望它有用。