0

我在两个不同的项目中有两个页面(这意味着在单独部署的不同耳朵文件中),我需要将数据从一个页面传递到另一个页面。

在我做的命令链接的动作中

public String onSalva() {
     ADFContext.getCurrent().getApplicationScope().put("comingFrom", md);

     return "goToPrint";
}

在另一个页面的支持 bean 的构造函数方法中,我这样做:

page = (String)ADFContext.getCurrent().getApplicationScope().get("comingFrom");

但页面始终为空。我尝试使用进程、会话和请求范围,但没有成功。有没有办法通过手动指定参数来重定向到另一个页面?就像是

   return "goToPrint?pageFrom="+md;
}
4

1 回答 1

1

当您说“不同的 EAR”时,这意味着两个应用程序彼此隔离,并且没有简单的方法可以通过 Java 从一个应用程序获取数据。

相反,您必须使用 HTTP 协议。如果您只想转到 URL,请使用HttpServletResponse.sendRedirect()

这将在浏览器中打开新页面,就好像用户在地址栏中输入了 URL。浏览器将不再与您的第一个应用程序对话

如果您想留在您的第一个应用程序中,只是将一些数据发送到另一端,有几种方法:您可以嵌入另一个应用程序iframe- 这将不允许您交换数据,但用户可以填写并提交表单, 例如。

或者您可以使用像HttpClient这样的库来与其他应用程序通信。这将允许您发送 POST 请求并执行 Web 浏览器可以对其他应用程序执行的所有操作。

最后,您可以定义两个 EAR 都使用的共享企业 bean。一种方法是定义两个应用程序都订阅的消息服务。第一个创建消息并将它们放入队列中,第二个等待消息并对其进行处理。

于 2011-11-14T15:36:24.503 回答