如何制作一个wicket组件,在每个AJAX请求重新呈现到页面?

mil*_*ose 0 java ajax wicket

有没有办法让Wicket组件在每个页面的AJAX请求上重新呈现?(基本上ajaxRendered="true"是在RichFaces中做什么.)

我的申请基本上包括以下内容:

  • 可编辑的数据网格记录用户正在进行的更改
  • 这些更改存储在会话中
  • 有按钮可以保存更改或撤消更改.

应启用或禁用保存和撤消按钮,具体取决于是否有任何记录的更改.由于有多种方法可以输入更改(编辑,导入CSV等),因此我希望避免拦截可能会更改已保存状态的每个操作.

此外,按钮仅显示在某些页面上,因此我不想在自定义中在页面中嗅探它们WebRequestCycle.

当一个AJAX请求即将被处理时,是否有一个Wicket调用的钩子,这是为页面上的每个组件调用的?我知道有Component#onBeforeRender()Component#onConfigure(),但对他们的文档时,他们呼吁AJAX请求并不状态.

mar*_*n-g 9

在Wicket 1.5,有一辆活动巴士.对于每个Ajax请求,将事件发送到每个组件,组件可以使用AjaxRequestTarget添加自身以进行重新呈现.

例如:

class MyComponent ... {

 public void onEvent(Object payload) {

   if (payload instanceod AjaxRequestTarget) {
     ((AjaxRequestTarget) payload).add(this);
   }
 } 
Run Code Online (Sandbox Code Playgroud)