如何在Wicket的onBeforeRender()方法中获取AjaxRequestTarget?

bla*_*666 7 wicket wicket-1.6

我有一个Ajax事件触发重绘各种Wicket面板.有些面板在onBeforeRender()方法中有自己的额外计算.如果有错误,我想将其显示给用户.但是我无法将FeedbackPanel添加到AjaxRequestTarget中,因为我无法在正在重绘的面板内访问它.

有没有办法在Wicket组件的onBeforeRender()中获取AjaxRequestTarget?一旦第一个组件已经处于onBeforeRender()状态,是否可以向Ajax目标添加其他组件?

如果只需要重绘的面板可以判断是否存在错误,是否有更好的方法将FeedbackPanel添加到Ajax目标?

bla*_*666 10

得到的AjaxTarget是这样的:

AjaxRequestTarget target = requestCycle.find(AjaxRequestTarget.class);
Run Code Online (Sandbox Code Playgroud)

不幸的是,就像我们预期的那样,一旦我处于渲染阶段,我无法向目标添加组件.但是Wicket提供了ITargetRespondListener该方法的接口onTargetRespond(AjaxRequestTarget target).在这里,我可以添加任何我想要的目标.

  • 对于未来的读者.当更少的上下文可用时:`RequestCycle.get().find(AjaxRequestTarget.class)` (8认同)