Hi;
For GET requests, specification defines two ways
1* Redirect via JSF --> OWB handles --> Adding cid parameter to the URL.
2* Ordinary GET requests --> You have to manage this scenario --> Adding
"cid" manually to URL
In second case, if URL contains "cid" then conversation is restored in
WebBeansPhaseListener#AfterPhase#RESTORE_VIEW via
String cid = JSFUtil.getExternalContext().getRequestParameterMap().get("cid");
--Gurkan
2009/11/18 Sven Linstaedt (JIRA) <[email protected]>
> CID during GET requests must be set on UIViewRoot earlier than before
> render response
>
> -------------------------------------------------------------------------------------
>
> Key: OWB-171
> URL: https://issues.apache.org/jira/browse/OWB-171
> Project: OpenWebBeans
> Issue Type: Bug
> Components: Context and Scopes
> Reporter: Sven Linstaedt
> Assignee: Gurkan Erdogdu
>
>
> The problem:
>
> GET requests in JSF2 can be handled by the full lifecycle, if the view
> contains a <f:metadata/> with appropriate <f:viewParam/> components.
> Because no UIViewRoot is restored, but instead a new one is created, no cid
> can be restored from the view root until WebBeansPhaseListener handles
> before render rensponse.
>
> If one requests the Conversation for injection during the lifecycle
> ConversationBean.createInstance() is called, which should lookup the
> conversation on the ConversationManager using the current sessionid and cid.
> Both string based parameters are again looked up from the
> ConversationService. Unfortunately ConversationService.getConversationId()
> uses the ViewRoot's attributes map of current FacesContext to retrieve the
> cid, which will be first set in the render phase. This results in a new
> conversation being created.
>
> A possible solution would consists of setting the cid as early as the view
> root is created in restore view.
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>
--
Gurkan Erdogdu
http://gurkanerdogdu.blogspot.com