1

我的目标是将用户重定向到外部站点并让他们回到我的站点,但保留 Trinidad pageFlowScope。这样我可以在各个页面中进行一些处理和状态保存,将它们发送到外部站点进行一些外部处理,然后让它们返回我的站点完成处理。从用户的角度来看,他们似乎在做一个连续的流程,并且可能在不同的浏览器选项卡中同时做多个。

我试图转换一切的方式,除了状态没有恢复外,它工作正常,是通过从我的流程中的页面到外部站点发布帖子,然后外部站点在下一个发布回我的站点页。这几乎就像一个断开连接的 ADF 任务流在单独的服务器上执行并返回到我的任务流中。

mysite.foo/faces/summary.jsf -> POST externalappserver.foo/faces/startexternal.jsf -> 另一个页面 -> POST myite/foo/faces/continue.jsf

我到处找遍了所有地方,发现了围绕 javax.faces.ViewState 的各种问题,但没有将其拉出,将其提供给外部站点,然后让外部站点在一段时间后将其发布回另一个(或即使是相同的)页面,它最初来自哪里。

关于如何操纵状态以便我可以正确返回我的站点的任何想法?

4

1 回答 1

0

我最终通过将 Trinidad 隐藏表单参数放在传递给其他服务的回调 URL 上解决了这个问题。因此,如果我的服务器/应用程序是http://localhost:7001/context/pageout.jsf并且它使用回调 URL 发布到另一个站点,则回调 URL 现在是:

http://localhost:7001/context/pageout.jsf?_afPfm=234z345

这允许特立尼达结合浏览器提供的 JSESSIONID cookie 来恢复其页面流。我不需要处理 ViewState 字段或任何其他会话问题。我的 pageFlowScope 已恢复一切正常。

于 2012-05-10T18:31:37.530 回答