[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-2956) seambay example throws an exception when placing a bid on the camera

Dan Allen (JIRA) jira-events at lists.jboss.org
Fri May 30 00:49:46 EDT 2008


    [ http://jira.jboss.com/jira/browse/JBSEAM-2956?page=comments#action_12414945 ] 
            
Dan Allen commented on JBSEAM-2956:
-----------------------------------

Aha! I was trying out the Seam Bay example on a hunch that natural conversations are broken when used with UI command components (h:commandButton/h:commandLink) and it turns out I am right and this exception proves it. The stacktrace here is quite a bit removed from the action problem.

Okay, so enough about being right. Let's get to the solution. The problem is that the natural conversation logic looks for a request parameter whose name matches the value of the conversationName request parameter. However, on a JSF postback, this request parameter is absent. Two things need to happen. We need to look for the natural conversation id in the page scope if it is not found in the request parameter when restoring the conversation.

To give you a better idea of what I am talking about, look at my workaround to fix the Seam Bay example:

<conversation name="PlaceBid"
  parameter-name="auctionId"
  parameter-value="#{facesPage.conversationId != null ? facesPage.conversationId.substring(9) : auction.auctionId}"/>

The substring is used to convert PlaceBid:333 into 333.


> seambay example throws an exception when placing a bid on the camera
> --------------------------------------------------------------------
>
>                 Key: JBSEAM-2956
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-2956
>             Project: Seam
>          Issue Type: Bug
>          Components: Examples
>    Affects Versions: 2.0.2.CR2
>            Reporter: Jay Balunas
>         Assigned To: Shane Bryzak
>             Fix For: 2.1.0.GA
>
>
> Attempt to bid on the camera - possibly other items as well.  With or without a value for the bid.  A seam error page is seen, and the exception below:
> 15:35:45,922 ERROR [SeamPhaseListener] swallowing exception
> org.jboss.seam.RequiredException: @In attribute requires non-null value: auctionDetail.entityManager
>         at org.jboss.seam.Component.getValueToInject(Component.java:2175)
>         at org.jboss.seam.Component.injectAttributes(Component.java:1598)
>         at org.jboss.seam.Component.inject(Component.java:1416)
>         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.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
>         at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)
>         at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)
>         at org.jboss.seam.example.seambay.AuctionDetailAction_$$_javassist_7.getAuction(AuctionDetailAction_$$_javassist_7.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:585)
>         at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
>         at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:125)
>         at org.jboss.seam.Component.callComponentMethod(Component.java:2089)
>         at org.jboss.seam.Component.getInstanceFromFactory(Component.java:1926)
>         at org.jboss.seam.Component.getInstance(Component.java:1863)
>         at org.jboss.seam.Component.getInstance(Component.java:1840)
>         at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
>         at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
>         at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:166)
>         at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:53)
>         at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
>         at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
>         at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
>         at org.jboss.el.parser.AstValue.getValue(AstValue.java:63)
>         at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
>         at org.jboss.seam.core.Expressions$1.getValue(Expressions.java:111)
>         at org.jboss.seam.navigation.ELConversationIdParameter.getParameterValue(ELConversationIdParameter.java:68)
>         at org.jboss.seam.navigation.ELConversationIdParameter.getConversationId(ELConversationIdParameter.java:63)
>         at org.jboss.seam.core.ConversationPropagation.restoreNaturalConversationId(ConversationPropagation.java:123)
>         at org.jboss.seam.core.ConversationPropagation.restoreConversationId(ConversationPropagation.java:56)
>         at org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:387)
>         at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:226)
>         at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:192)
>         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)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164)
>         at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)
>         at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)
>         at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:406)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>         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.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
>         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.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:45)
>         at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
>         at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
>         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)
>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
>         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>         at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
>         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
>         at java.lang.Thread.run(Thread.java:595)

-- 
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