我在来自不同会话的静态哈希图中存储了一些检票口面板,我想做一些事情,比如某个面板通知地图,然后地图通知所有其他面板。例如:
public class PanelMap{
private static Map<Long, List<MyPanel>> map = new HashMap<Long, List<MyPanel>>();
public static void subscribe(Long id, MyPanel panel){
if (!map.containsKey(id)){
map.put(id, new ArrayList<MyPanel>());
}
map.get(id).add(panel);
}
}
public static void notify(Long id, String notification){
if (map.containsKey(id)){
List<MyPanel> panels = map.get(id);
for(MyPanel panel : panels){
panel.newNotification(notification);
}
}
}
}
在面板中,newNotification(字符串通知)我想向服务器发送请求并在浏览器中刷新我的面板。
public void String newNotification(String notification){
// do some business logic depends on notification
onMyRequest();
}
我在检票口行为源文件中进行了一些搜索,关于我发现AbstractDefaultAjaxBehavior
我试图在我的检票口面板中创建自己的 onRequest 方法,如下所示
private void onMyRequest(){
AjaxRequestTarget target = ((WebApplication)getApplication()).newAjaxRequestTarget(getPage());
target.add( _some_wicket_components_ );
RequestCycle.get().scheduleRequestHandlerAfterCurrent(target);
}
但我所做的只是 Wicket Ajax Debug 中的一些 Ajax 错误
Wicket.Ajax.Call.processComponent: Component with id _containerdiv_ was not found while trying to perform markup update.
ERROR: Cannot find element with id: _someComponentIdOnPanel_
(这些组件是存在的)
我如何将自己的请求发送到服务器(或者如何获得有效的 AjaxRequestTarget 来更新我的组件?)
更新:我需要会话间通信。