3

页面标记有

<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: 实际上是另外一回事——我注意到我的一个 AjaxSubmitLink 引用了一个不再放置在标记中的表单……所以无论你做什么,只要记住不要留下那个引用。

4

2 回答 2

1

您在更换面板后添加 MyPage 导致 MyPage 重新呈现。这里有一个关于如何更换面板的好例子。

于 2013-11-12T08:48:08.260 回答
0

是的,您可以通过反射调用面板。我不清楚您在此处尝试对事件做什么,但如果您愿意,可以附加面板AjaxSelfUpdatingTimerBehavior并定义将在给定时间段内更新此组件的持续时间。

希望它有用。

于 2013-11-13T05:04:00.343 回答