Hello,

We are currently using Seam 1.2.1.GA and I have a question regarding the 
conversation time outs and redirects.

We have a page called listcontacts.xhtml with an s:link that calls a bean 
method action:


  | <s:link action="#{contactBean.add}" styleClass="button">Add</s:link>
  | 

This method is annotated with the @Begin annotation:


  |     @Begin 
  |     public void add() {
  |             contact = new Contact();
  |     }
  | 

The contact is outjected:

  |     @In(required=false)
  |     @Out(required=false)
  |     private Contact contact;
  | 

In our pages.xml, we have:


  |     <page view-id="/secure/*" scheme="https">    
  |             <navigation from-action="#{contactBean.add}">
  |                     <redirect view-id="/secure/editcontact.xhtml" />
  |             </navigation>
  |                 ...
  | 

When we log into our app and click this link, it works as expected and takes us 
to our editcontact.xhtml page with the new blank contact.

If we wait 2 minutes (our conversation timeout length), and then click the 
link, we get the following error:


  | 21:22:37,812 ERROR [STDERR] Jul 19, 2007 9:22:37 PM 
com.sun.facelets.FaceletViewHandler handleRenderException
  | SEVERE: Error Rendering View[/secure/editcontact.xhtml]
  | javax.faces.el.PropertyNotFoundException: /secure/editcontact.xhtml @28,91 
value="#{contact.contactType}": Target Unreachable, i
  | dentifier 'contact' resolved to null
  |         at 
com.sun.facelets.el.LegacyValueBinding.getType(LegacyValueBinding.java:96)
  |         at org.jboss.seam.ui.EnumItem.getValue(EnumItem.java:47)
  |         at 
org.apache.myfaces.shared_impl.util.SelectItemsIterator.hasNext(SelectItemsIterator.java:70)
  |         at 
org.apache.myfaces.shared_impl.renderkit.RendererUtils.internalGetSelectItemList(RendererUtils.java:477)
  |         at 
org.apache.myfaces.shared_impl.renderkit.RendererUtils.getSelectItemList(RendererUtils.java:453)
  |         at 
org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.internalRenderSelect(HtmlRendererUtils.java:278)
  |         at 
org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderMenu(HtmlRendererUtils.java:252)
  |         at 
org.apache.myfaces.shared_impl.renderkit.html.HtmlMenuRendererBase.encodeEnd(HtmlMenuRendererBase.java:54)
  |         at 
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
  |         at org.jboss.seam.ui.JSF.renderChild(JSF.java:180)
  |         at org.jboss.seam.ui.JSF.renderChildren(JSF.java:162)
  |         at org.jboss.seam.ui.UIDecorate.encodeChildren(UIDecorate.java:234)
  |         at 
com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:244)
  |         at 
com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
  |         at 
com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
  |         at 
com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
  |         at 
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:573)
  |         at 
org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
  |         at 
org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:229)
  |         at 
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at 
org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
  |         at 
org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60)
  |         at 
org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at 
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  |         at 
org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at 
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
  |         at 
org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at 
org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
  |         at 
org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at 
org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
  |         at 
org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  |         at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  |         at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
  |         at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  |         at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  |         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  |         at 
org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  |         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  |         at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  |         at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
  |         at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
  |         at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |         at 
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  |         at java.lang.Thread.run(Thread.java:595)
  | 

Looking at the DEBUG entries, it appears as though a conversation cleanup 
occurs after the add method exits, but before the @Begin is applied and the  
conversation is promoted to long running.  

If I replace the redirect with render, it works...at least until it hits 
another redirect.  

Why would redirect behave differently after a conversation timeout?  Shouldn't 
the temporary conversation be promoted to a long running before the redirect 
and thus everything should work?

Why would it work before the timeout but not after.

Any help is greatly appreciated.

Thanks,
Mark

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4066009
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to