2015-08-28 27 views
0

我试图在JSF中实现Flash。如果我必须在一个会话中的页面之间传输Java对象,那么它运行良好。但我有一个我需要解决的空间案例。在JSF页面之间传输Java对象

我有一个提交表单,用户输入个人数据。然后他打开第二页,用于打开支付网关(paypal)页面。当应用支付时,Paypal会将用户重定向到新网页中的网站。

我需要一些方法来在第一页和最后一页之间传输Java对象数据。有没有解决方法? 我使用JSF 2.2.6与Tomcat的8

+2

Uhmmm哪里单独的会话来自的范围是什么?只需将它存储在会话中,或将它作为请求参数添加到您提供给paypal的返回url(如果您使用其中一个,并且安全性明智) – Kukeltje

+0

[在会话中存储对象](http://stackoverflow.com /问题/ 7480325 /如何对保存-的对象 - 到 - JSF会话)。 – Omar

回答

1

我猜贝宝的重定向到您的网站创建一个新的会话,如果这是你需要做的就是创建一个DTO对象,并使用序列Java Serializable Object to Byte Array

存储到BD与会话ID的情况下但是,如果贝宝在同一个会话上调用,所有你需要做的就是从这个会话中获得像这样的对象

FacesContext facesContext = getFaceContext(); 
Application app = facesContext.getApplication(); 
ExpressionFactory elFactory = app.getExpressionFactory(); 
ELContext elContext = facesContext.getELContext(); 
ExternalContext externalContext = facesContext.getExternalContext(); 
HttpSession session = (HttpSession) externalContext.getSession(true); 
session.setMaxInactiveInterval(-1); 
ValueExpression valueExp = elFactory.createValueExpression(elContext, expression, Object.class); 
YourBean yourBean = (YourBean) valueExp.getValue("#{yourBean}"); 

这个bean必须@SessionScoped