[jboss-user] [JBoss Seam] - Re: @in(create=true) not working !

_polly do-not-reply at jboss.com
Wed Sep 26 10:52:01 EDT 2007


right... i'm having another try at upgrading to seam 2.0.0CR1!

I've narrowed the problem down to being something to with the RichFaces integration. Specifically, the RichFaces tab panel doesn't seem to be able to access Seam components through the EL. I've changed the RichFaces jar files to the 3.1.1 snapshot release and it is displaying the RichFaces tab panel correctly - it's just getting hold of seam components that is failing. This is giving the 'In attribute requires non-null value' error.

The xhtml file snippet is:


  | <h:form class="homepage" id="homepageform" enctype="multipart/form-data">
  | 
  | <h:inputText value="#{userView.selectedTab}" id="selectedTab"/>
  | 
  | <rich:tabPanel switchType="client" selectedTab="#{userView.selectedTab}">
  | 
  | ...
  | 

The standard jsf inputText component above the tab panel picks up the #{userView.selectedTab} fine, and if I put debug output in the selectedTab getter for the userView bean I can see it is being called without any problems by the jsf widget. But with the richfaces tab panel i get this stack trace:


  | 15:28:18,282 admin WARN  [lifecycle] executePhase(RESTORE_VIEW 1,com.sun.faces.context.FacesContextImpl at 8bfd35) threw exception
  | javax.faces.FacesException: javax.el.ELException: /admin/adminhome.xhtml @25,78 selectedTab="#{userView.selectedTab}": Error reading 'selectedTab' on type org.javassist.tmp.java.lang.Object_$$_javassist_3
  |         at javax.faces.component.UIOutput.getValue(UIOutput.java:176)
  |         at org.richfaces.component.UITabPanel.getValue(UITabPanel.java:70)
  |         at org.richfaces.component.UITabPanel.getRenderedValue(UITabPanel.java:96)
  |         at org.richfaces.component.UITabPanel.restoreState(UITabPanel.java:119)
  |         at org.richfaces.component.html.HtmlTabPanel.restoreState(HtmlTabPanel.java:985)
  |         at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1138)
  |         at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1154)
  |         at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1154)
  |         at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1154)
  |         at org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:245)
  |         at com.sun.faces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:287)
  |         at org.jboss.seam.jsf.SeamViewHandler.restoreView(SeamViewHandler.java:93)
  |         at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:316)
  |         at org.ajax4jsf.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:116)
  |         at org.ajax4jsf.application.AjaxViewHandler.restoreView(AjaxViewHandler.java:159)
  |         at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:141)
  |         at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
  |         at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
  |         at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
  |         at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
  |         at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
  |         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  |         at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:150)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  |         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  | 
  | <snip>
  | 
  | Caused by: org.jboss.seam.RequiredException: In attribute requires non-null value: userView.entityController
  |         at org.jboss.seam.Component.getValueToInject(Component.java:2169)
  |         at org.jboss.seam.Component.injectAttributes(Component.java:1599)
  |         at org.jboss.seam.Component.inject(Component.java:1417)
  |         at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:45)
  |         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.persistence.EntityManagerProxyInterceptor.aroundInvoke(EntityManagerProxyInterceptor.java:26)
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
  |         at org.jboss.seam.persistence.HibernateSessionProxyInterceptor.aroundInvoke(HibernateSessionProxyInterceptor.java:27)
  |         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.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:50)
  |         at sun.reflect.GeneratedMethodAccessor1494.invoke(Unknown Source)
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:597)
  |         at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
  |         at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:57)
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
  |         ... 96 more
  | 
  | 
  | 

It seems to be complaining about the injected EntityController object, which gets created fine everywhere else it is accessed apart from in this tabpanel. This is how i inject it:


  |     @In(create=true)
  |     private EntityController ec;
  | 

Do I need to change anything in my web.xml maybe for this release? I currently have:


  |     <!-- Ajax4jsf -->
  |     <context-param>
  |         <param-name>org.richfaces.SKIN</param-name>
  |         <param-value>blueSky</param-value>
  |     </context-param>
  |         
  |     <context-param>
  |         <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  |         <param-value>com.sun.facelets.FaceletViewHandler</param-value>
  |     </context-param>
  | 
  |     <!-- Seam -->
  | 
  |     <listener>
  |         <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
  |     </listener>
  |     
  |     <filter>
  |         <filter-name>Seam Filter</filter-name>
  |         <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
  |     </filter>
  |     
  |     <filter-mapping>
  |         <filter-name>Seam Filter</filter-name>
  |         <url-pattern>/*</url-pattern>
  |     </filter-mapping>
  |     
  |     <servlet>
  |         <servlet-name>Seam Resource Servlet</servlet-name>
  |         <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
  |     </servlet>
  | 
  |     <servlet-mapping>
  |         <servlet-name>Seam Resource Servlet</servlet-name>
  |         <url-pattern>/seam/resource/*</url-pattern>
  |     </servlet-mapping>
  |  
  |   ...
  | 
  | 

I looked at the seam-examples for seamdiscs, which has richfaces integrated, and there is no richfaces filter defined in the web.xml - just a comment to say it is now handled by the seam filter, so I took the richfaces filter part out.

The tab panel renders ok if I put a static value in like 
<rich:tabPanel switchType="client" selectedTab="homePage">

and I can access seam components through other widgets, it's just the two things together that don't seem to play nicely!

so has anyone got any bright ideas about this one? any help at all would be greatly appreciated! :)

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4088888#4088888

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4088888



More information about the jboss-user mailing list