Hallo Werner,
I have got the request as a variable.
Now I want to read from it the state of the hidden input-field, that
was on the jsf-Page.
This is the input-field:
<t:inputText value="#{mbUser.loginType}"
id="loginType"
immediate="true"
style="display:none;visibility:hidden;"/>
How can I read its value from the request?
Thanks,
Georg
2009/8/20 Werner Punz <[email protected]>:
> FacesContext.getExternalContext().getRequest should point you towards
> the servlet request.
>
> Werner
>
>
> Georg Füchsle schrieb:
>> Hallo all,
>>
>> when a session of an user timed out I display a Website telling 'Your
>> Session expired; please login again!".
>> Now I have to distinguish some 'loginType' of the user.
>> If the user initially logged on by ldap i have to redirect him to
>> another site as if he logged in by internal mechanisms.
>>
>> So I have to access the user's logintype data after the session timed out.
>>
>> I was thinking on a solution without using cookies:
>> To do so, I put the loginType data to a hidden input field on the
>> website. I thought that this data is not lost doing a request after
>> session timeout.
>>
>> Unfortunately at the restoreview-Phase the data was not already
>> written to the bean.
>>
>> But I think: in the request there will be sent also the information
>> from the old (session timed out) page. So I also should be able to
>> read the value of this input-field 'loginType'. Is there any
>> possibility to read from the request?
>>
>> Can anybody tell me if I am right, and tell me how to read this data?
>>
>> I use JSF Tomahawk and Facelets.
>>
>>
>> Thanks!
>>
>>
>>
>> Here my input-text:
>>
>>
>>
>> <t:inputText value="#{mbUser.loginType}"
>> id="loginType"
>> immediate="true"
>> style="display:none;visibility:hidden;"/>
>>
>>
>>
>>
>>
>> here my PhaseListener:
>>
>>
>> class PhaseListener
>> {
>>
>> public void beforePhase(PhaseEvent event)
>> {
>> if(event.getPhaseId() == PhaseId.RESTORE_VIEW)
>> {
>> /*
>> before processing any request, I control if the User
>> is logged in
>> to the application:
>> */
>> UserBean user = JsfUtils.getUserBean();
>>
>> if(!user.loggedIn())
>> {
>> /*
>> User is not logged in!
>> */
>> ExternalContext extCtx =
>> event.getFacesContext().getExternalContext();
>> HttpServletRequest request =
>> (HttpServletRequest) extCtx.getRequest();
>> String reqUri = request.getRequestURI();
>>
>> if(startOrErrorPageIsCalled(reqUri))
>> {
>> /*
>> Users that are not logged in are only
>> allowed to see the
>> login-page or the error pages...
>> */
>> return;
>> }
>> else
>> {
>> /*
>> Users that is not logged in tried to
>> request the application.
>> I want to redirect him to a page
>> 'sessionExpired' depending on
>> his former loginType; this loginType I want to save on the website;
>> */
>>
>> // HERE THE LOGINTYPE WAS NOT reset to
>> the Bean. is there any
>> other possibility to read this value from the request?
>> if(user.getLoginType() == 1)
>> {
>>
>> event.getFacesContext().getExternalContext().redirect(JsfUtils.getKontextRoot()
>> + "sessionExpired.jsf");
>> }
>> else
>> {
>> // redirect him to another
>> website
>> }
>> }
>> }
>>
>> }
>> }
>>
>>
>> }
>>
>
>