Post your web.xml, please!

regards,

Martin

On 2/12/06, Umesh Kanitkar <[EMAIL PROTECTED]> wrote:
> PhaseListener gets added twice. Is this a bug in myfaces or am I doing
> something wrong. Here is the detailed info:
>
>
> Part I:
> =====
> I have made this entry only once in my faces-config.xml file:
>
> <lifecycle>
> <phase-listener>
> com.ebay.channel.phaselisteners. AuthorizationPhaseListener
> </phase-listener>
> </lifecycle>
>
> Part II:
> =====
> I notice that The AuthorizationPhaseListener gets added twice. I can confirm
> this in the LifeCycleImpl.java class when viewed under the debugger.
> I looked at this method:
>   private void informPhaseListenersAfter(FacesContext facesContext, PhaseId
> phaseId)
>    {
>        PhaseListener[] phaseListeners = getPhaseListeners();
>        for (int i = 0; i < phaseListeners.length; i++)
>        {
>            PhaseListener phaseListener = phaseListeners[i];
>            int listenerPhaseId = phaseListener.getPhaseId().getOrdinal();
>            if (listenerPhaseId == PhaseId.ANY_PHASE.getOrdinal() ||
>                listenerPhaseId == phaseId.getOrdinal())
>            {
>                phaseListener.afterPhase(new PhaseEvent(facesContext,
> phaseId, this));
>            }
>        }
>
>    }
>
>
> [[[[The phaseListeners Array has AuthorizationPhaseListener twice.
> The second call to phaseListener.afterPhase method of the
> AuthorizationPhaseListener causes an exception. ]]]]
>
>
>
> Part III:
> =====
> This is my afterPhase method in the AuthorizationPhaseListener:
> I want to restrict access to all pages other than the UserLogin page. If the
> user is logged in then afterPhase returns without redirecting user to the
> UserLogin page.
>
> public void afterPhase(PhaseEvent event) {
>
> FacesContext fc =  event.getFacesContext();
> if(fc.getViewRoot() == null ) {
> return;
> } else {//ViewRoot Not null
> if(fc.getViewRoot().getViewId().equals("/demo/UserLogin.jsp")) {
> //Do not redirect if you are trying to reach the Login Page.
> return;
> }
> }
>
> ApplicationFactory appFactory = (ApplicationFactory) FactoryFinder
> .getFactory(FactoryFinder.APPLICATION_FACTORY);
> Application app = appFactory.getApplication();
> UserSessionBean usb = (UserSessionBean)app.createValueBinding(
> "#{userSessionBean}").getValue(fc);
> if(!usb.isUserLoggedIn()) {
>            ExternalContext externalContext = fc.getExternalContext();
>            ViewHandler viewHandler = fc.getApplication().getViewHandler();
>            String redirectPath = viewHandler.getActionURL(fc,
> "/Test/demo/UserLogin.faces");
>
>            try
>            {
>
> externalContext.redirect(externalContext.encodeActionURL(redirectPath));
>            }
>            catch (IOException e)
>            {
>                throw new FacesException(e.getMessage(), e);
>            }
>            fc.responseComplete();
>
>            /*
> NavigationHandler nh = app.getNavigationHandler();
> nh.handleNavigation(fc, null, "goto_login_page");
> */
> }
> }
>
>
>


--

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Reply via email to