2015-08-28 103 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