【问题标题】:Transfer Java object between JSF pages在 JSF 页面之间传输 Java 对象
【发布时间】:2015-11-23 01:16:12
【问题描述】:

我尝试在 JSF 中实现 flash。如果我必须在一个会话中在页面之间传输 Java 对象,那么它工作得很好。但我有一个需要解决的空间案例。

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

我需要一些方法在第一页和最后一页之间传输 Java 对象数据。有什么解决办法吗? 我将 JSF 2.2.6 与 Tomcat 8 一起使用。

【问题讨论】:

  • Uhmmm 单独的会话从何而来?只需将其存储在会话中,或将其作为请求参数添加到您提供给贝宝的返回 url 中(如果您使用一个并且它是安全的安全明智的)
  • 我无法将其“标记”为重复项...因此仅提供链接答案:stackoverflow.com/questions/7991771/… 并在 RETURNURL 请求参数中对您的参数进行编码...

标签: jsf jsf-2.2


【解决方案1】:

我猜将 paypal 重定向到您的站点会创建一个新会话,如果是这种情况,您所要做的就是创建一个 DTO 对象并使用序列化Java Serializable Object to Byte Array 将会话 ID 存储到 BD 中

但是,如果在同一个会话中调用 paypal,你所要做的就是像这样从会话中获取对象

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2016-10-13
    相关资源
    最近更新 更多