我有一些wicket面板存储在不同会话的静态Hashmap中,我想做一些,比如如果某个面板通知地图,那么地图通知所有其他面板。例如:
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(String notification)我想向服务器发送请求,并在浏览器中刷新我的面板。
public void String newNotification(String notification){
// do some business logic depends on notification
onMyRequest();
}
我在wicket行为源文件中进行了一些搜索,在AbstractDefaultaJaxBehavior
中发现,我试图在wicket面板中创建自己的onRequest方法,如下所示
private void onMyRequest(){
AjaxRequestTarget target = ((WebApplication)getApplication()).newAjaxRequestTarget(getPage());
target.add( _some_wicket_components_ );
RequestCycle.get().scheduleRequestHandlerAfterCurrent(target);
}
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,因为这在某种程度上代表了服务器和请求用户之间的单个通信,而另一个用户的浏览器无法知道该通信。(非常非常基本的口语)
您可以使用AjaxSelfUpdatingTimerBehavior轮询更新。这将以固定的时间间隔为每个用户生成新的AjaxRequestTarget,您可以使用它来附加更改的面板。这是一个非常基本和简单的实现,很可能会影响您的系统性能,并产生相当多的通信量。
另一种方法是使用类似Atmosphere的东西,它由Wicket-Atmosphere支持(可以在这里找到quickstart),在wicket-library.com有一些示例,但我只知道这些。
我有一个遗留的Java1.6运行localhostTomcat 7应用程序使用JSP页面,一个带有框架的框架集,javascript,但没有像Struts这样的框架。我使用请求或会话从servlet传递一个对象以在页面中显示,这很好。 然而,我最近做了一些更改,现在我无法从会话或请求中检索到相同的对象。它以前工作得很好,所以我不确定是什么坏了,但我甚至无法将字符串值从JSP返回到servlet。
我有一个问题,过去几天我一直在网上搜索。我发现有类似问题的人,但世卫组织的解决方案并没有改善我的状况。 最令人恼火的是,我以前一直在使用它,没有任何问题或障碍。 问题是,我在java web应用程序上的会话要么在请求之间被删除,要么一开始就无法正确创建。 一些简单的故障排除: 我可以很好地创建和使用cookie。 每次我刷新或跟踪指向servlet或jsp的链接时,jsesionid都会得到一个新
问题内容: 我刚刚启动了一个简单的Java测试项目,该项目使用Hibernate管理某些实体,并提供REST接口来操纵这些对象并提供一些其他业务逻辑。REST接口是使用RESTEasy和Jetty创建的。 到目前为止,一切工作正常,但是我感觉我实际上写了太多样板代码。由于我在这些Java框架中没有太多经验,所以我只是想知道是否有人可以给我提示如何改善这种情况。 每个请求创建hibernate会话
org.openqa.selenium.SessionNotCreatedException:无法创建新会话。(原始错误:命令失败:C:\Windows\system32\cmd.exe/s/C“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 69c7aa170104安装“C:\Program Files(x8
问题内容: 我正在维护Java Web应用程序。 通过登录代码,它可以通过HttpServletRequest的getSession()方法从HttpServletRequest中获取一个HttpSession。(它在会话中使用一些值进行认证) 但是,我担心会话固定攻击,因此在使用初始会话后,我想开始一个新会话或更改会话ID。这可能吗? 问题答案: Servlet 3.0 API不允许您更改现有会
我一直有一个问题,当请求来自域名而不是localhost时,会话变量不可用。例如,如果我设置一个用户变量: 当客户端发出另一个请求并且我尝试访问用户会话变量时,它返回null。 我注意到,在每个请求中,都会设置一个新的JSESSIONID cookie,并且ID值会更改。这是否意味着每次客户端访问服务器时都会创建一个新会话?如何在客户端之间保持相同的会话,以便我可以在Http会话中存储对象并访问它