我在两个不同的项目中有两个页面(这意味着在不同的ear文件中奇异地部署),我需要将数据从一个页面传递到另一个页面。
在命令链接的动作中,我做
public String onSalva() {
ADFContext.getCurrent().getApplicationScope().put("comingFrom", md);
return "goToPrint";
}
,在另一个页面的后台bean的构造函数方法中,我做:
page = (String)ADFContext.getCurrent().getApplicationScope().get("comingFrom");
但是page总是空的。我尝试使用进程,会话和请求范围,但没有运气。是否有一种方法,我可以重定向到另一个页面通过手动指定参数?就像
return "goToPrint?pageFrom="+md;
}
当您说"不同的EAR"时,这意味着两个应用程序彼此隔离,并且没有简单的方法可以通过Java从一个应用程序获取数据到另一个应用程序。
相反,您必须使用HTTP协议。如果你只是想去一个URL,使用HttpServletResponse.sendRedirect()
这将在浏览器中打开新页面,就好像用户在位置栏中输入了URL一样。浏览器将不再与你的第一个应用程序对话
如果你想留在你的第一个应用程序,只是发送一些数据到另一边,有几种方法:你可以嵌入另一个应用程序与iframe
-这将不允许你交换数据,但用户可以填写和提交一个表单,例如。
或者您可以使用像HttpClient这样的库来与其他应用程序通信。这将允许你发送POST请求,并做所有web浏览器可以对其他应用程序做的事情。
最后,您可以定义一个两个ear都使用的共享企业bean。一种方法是定义两个应用程序都订阅的消息服务。第一个创建消息并将它们放入队列,第二个等待消息并对其进行处理。