[jbossseam-issues] [JBoss JIRA] Reopened: (JBSEAM-1041) Pages: isLoginRedirectRequired should be called before applying request parameter values

Darryl Smith (JIRA) jira-events at lists.jboss.org
Sun Jul 8 08:43:03 EDT 2007


     [ http://jira.jboss.com/jira/browse/JBSEAM-1041?page=all ]

Darryl Smith reopened JBSEAM-1041:
----------------------------------

             
This issue is still present in Seam CVS 20070708-0815

[07/08 08:27:53] ERROR [seam.exception.DebugPageHandler] - <redirecting to debug page>
org.jboss.seam.RequiredException: In attribute requires non-null value: vacancyVersionHome.currentUser
	at org.jboss.seam.Component.getValueToInject(Component.java:2059)
	at org.jboss.seam.Component.injectAttributes(Component.java:1498)
	at org.jboss.seam.Component.inject(Component.java:1319)
	at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:45)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.persistence.ManagedEntityIdentityInterceptor.aroundInvoke(ManagedEntityIdentityInterceptor.java:43)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.transaction.TransactionInterceptor$1.work(TransactionInterceptor.java:38)
	at org.jboss.seam.util.Work.workInTransaction(Work.java:39)
	at org.jboss.seam.transaction.TransactionInterceptor.aroundInvoke(TransactionInterceptor.java:32)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:106)
	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:151)
	at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:87)
	at edu.uga.ais.piac.pva.action.vacancy.VacancyVersionHome_$$_javassist_0.create(VacancyVersionHome_$$_javassist_0.java)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
	at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:124)
	at org.jboss.seam.Component.callComponentMethod(Component.java:1974)
	at org.jboss.seam.Component.callCreateMethod(Component.java:1897)
	at org.jboss.seam.Component.newInstance(Component.java:1876)
	at org.jboss.seam.Component.getInstance(Component.java:1773)
	at org.jboss.seam.Component.getInstance(Component.java:1740)
	at org.jboss.seam.Component.getInstance(Component.java:1734)
	at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:60)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:135)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
	at org.jboss.seam.core.Validators$ValidatingResolver.getValue(Validators.java:160)
	at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
	at org.jboss.el.parser.AstValue.getTarget(AstValue.java:34)
	at org.jboss.el.parser.AstValue.setValue(AstValue.java:83)
	at org.jboss.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
	at org.jboss.seam.core.Validators.validate(Validators.java:118)
	at org.jboss.seam.navigation.Param.getValueFromRequest(Param.java:219)
	at org.jboss.seam.navigation.Pages.storeRequestParameterValuesInViewRoot(Pages.java:726)
	at org.jboss.seam.navigation.Pages.postRestore(Pages.java:352)
	at org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:389)
	at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:211)
	at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:184)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

The problem is cause by validation of request parameters

Pages.java:346
---------------------
   public void postRestore(FacesContext facesContext)
   {
      //first store the page parameters into the viewroot, so 
      //that if a login redirect occurs, or if a failure
      //occurs while applying to the model, we can still make
      //Redirect.captureCurrentView() work.
      boolean validationFailed = storeRequestParameterValuesInViewRoot(facesContext);
      if (validationFailed) Validation.instance().fail();
      
      String viewId = getViewId(facesContext);      
      for ( Page page: getPageStack(viewId) )
      {         
         if ( isLoginRedirectRequired(viewId, page) )
         {
            redirectToLoginView();
            return;
         }

> Pages: isLoginRedirectRequired should be called before applying request parameter values
> ----------------------------------------------------------------------------------------
>
>                 Key: JBSEAM-1041
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-1041
>             Project: JBoss Seam
>          Issue Type: Bug
>          Components: Security
>    Affects Versions: 1.2.0.GA
>            Reporter: Darryl Smith
>         Assigned To: Gavin King
>             Fix For: 1.3.0.ALPHA
>
>
> Seam will apply page parameters before it does the checks to see if login redirection is required.
> This is problematic for applications rely on session scope information created in authenticator being present
> e.g. using @In(scope=SESSION) currentUser, or using @In(scope=SESSION) Identity identity, or any factory that depends on identity information
> 12:16:53,383 ERROR [DebugPageHandler] redirecting to debug page
> org.jboss.seam.RequiredException: In attribute requires non-null value: userBrowseQueryFactory.currentUser
> 	at org.jboss.seam.Component.getValueToInject(Component.java:1887)
> 	at org.jboss.seam.Component.injectAttributes(Component.java:1336)
> 	at org.jboss.seam.Component.inject(Component.java:1163)
> 	at org.jboss.seam.interceptors.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46)
> 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
> 	at org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:27)
> 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
> 	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103)
> 	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:154)
> 	at org.jboss.seam.intercept.JavaBeanInterceptor.intercept(JavaBeanInterceptor.java:89)
> 	at edu.uga.ais.piac.pva.action.user.UserBrowseQueryFactory$$EnhancerByCGLIB$$5ef43164.setFirstResult(<generated>)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.apache.myfaces.el.PropertyResolverImpl.setProperty(PropertyResolverImpl.java:406)
> 	at org.apache.myfaces.el.PropertyResolverImpl.setValue(PropertyResolverImpl.java:173)
> 	at org.apache.myfaces.el.ValueBindingImpl.setValue(ValueBindingImpl.java:275)
> 	at org.jboss.seam.core.Expressions$1.setValue(Expressions.java:67)
> 	at org.jboss.seam.core.Pages.applyRequestParameterValues(Pages.java:608)
> 	at org.jboss.seam.jsf.AbstractSeamPhaseListener.beforeRender(AbstractSeamPhaseListener.java:176)
> 	at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:57)
> 	at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:70)
> 	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:373)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list