I'm tearing my hair out over this simple thing I'd like to do: a conversation 
spanning two pages. Basically I have a table in which the user can click "edit" 
on a certain row. This will redirect the user to an edit page and the edit page 
gets populated with the selected item. So far so good. Upon clicking either 
save or cancel in the edit page the exception below comes up. It seems that the 
"supplierX" entity is nulled upon clicking either save or cancel. Am I missing 
some obvious logic or is this a configuration issue? We deployed this on JBoss 
4.2.0.GA.

The stack trace:
anonymous wrote : javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
  | 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  | 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
  | org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:63)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:87)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:63)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:46)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:140)
  | 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:46)
  | 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  | 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  | 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  | 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
  | 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
  | 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  | 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  | 
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  | 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  | org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
  | org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  | 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
  | org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  | java.lang.Thread.run(Thread.java:595)
  | 
  | Caused by javax.el.PropertyNotFoundException with message: 
"/stemtables/supplier/edit_supplier.xhtml @30,59 value="#{suppplierX.phone}": 
Target Unreachable, identifier 'suppplierX' resolved to null"
  | 
  | com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:62)
  | 
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:81)
  | javax.faces.component.UIInput.getConvertedValue(UIInput.java:934)
  | javax.faces.component.UIInput.validate(UIInput.java:860)
  | javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
  | javax.faces.component.UIInput.processValidators(UIInput.java:666)
  | javax.faces.component.UIForm.processValidators(UIForm.java:229)
  | 
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030)
  | javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)
  | 
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
  | com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
  | com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
  | javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
  | 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  | 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
  | org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:63)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:87)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:63)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:46)
  | 
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:140)
  | 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:46)
  | 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  | 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  | 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  | 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
  | 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
  | 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  | 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  | 
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  | 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  | org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
  | org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  | 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
  | org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  | java.lang.Thread.run(Thread.java:595)

The SFSB:
@Stateful
  | @Name("supplierMaintenance")
  | @Scope(ScopeType.CONVERSATION)
  | public class SupplierMaintenanceAction implements SupplierMaintenance {
  | 
  |     @PersistenceContext(type = PersistenceContextType.EXTENDED)
  |     private EntityManager entityManager;
  |     
  |     @EJB
  |     private SupplierFacadeLocal supplierFacade;
  |     
  |     @DataModel
  |     private List<Supplier> suppliers;
  |     
  |     @DataModelSelection
  |     @Out(value = "supplierX", required = false) // works
  |     @In(value = "supplierX", required = false) // doesn't work! why?
  |     private Supplier selectedSupplier;
  |     
  |     @Logger
  |     private Log log;
  | 
  |     @Begin
  |     @Factory("suppliers")
  |     public void findSuppliers() {
  |             log.debug("Entering findSuppliers.");
  |             try {
  |                     suppliers = supplierFacade.findAllSuppliers();
  |             } catch (Exception e) {
  |                     log.error("Failed to find suppliers.", e);
  |             }
  |             log.debug("Leaving findSupplier.");
  |     }
  |     
  |     public String edit() {
  |             return null;
  |     }
  |     
  |     @End
  |     public String delete() {
  |             Supplier toDelete = entityManager.merge(selectedSupplier);
  |             entityManager.remove(toDelete);
  |             findSuppliers();
  |             return null;
  |     }
  |     
  |     @End
  |     public String save() {
  |             Supplier toStore = entityManager.merge(selectedSupplier);
  |             entityManager.persist(toStore);
  |             findSuppliers();
  |             return null;
  |     }
  |     
  |     @End
  |     public String cancel() {
  |             return null;
  |     }
  |     
  |     @Remove // remove method is mandated by EJB3 specification for stateful 
session beans
  |     public void remove() {} 
  | 
  |     @Destroy // destroy method is mandated by EJB3 specification for 
stateful session beans
  |     public void destroy() {}
  | }

pages.xml
<pages 
  |     xmlns="http://jboss.com/products/seam/pages";
  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  |     xsi:schemaLocation="http://jboss.com/products/seam/pages 
http://jboss.com/products/seam/pages-2.0.xsd";
  |     no-conversation-view-id="/login.xhtml" login-view-id="/login.xhtml">
  |     
  |     <page view-id="*">
  |         <navigation from-action="#{identity.logout}">
  |             <redirect view-id="/login.xhtml" />
  |         </navigation>
  |     </page>
  |     
  |     <page view-id="/login.xhtml">
  |         <navigation>
  |             <rule if="#{identity.loggedIn}">
  |                 <redirect view-id="/welcome.xhtml" />
  |             </rule>
  |         </navigation>
  |     </page>
  |     
  |     <page view-id="/welcome.xhtml" login-required="true"></page>
  |     
  |     <!-- SUPPLIER MAINTAINCE -->
  |     <page view-id="/stemtables/supplier/supplier.xhtml" 
login-required="true">
  |             <navigation from-action="#{supplierMaintenance.delete}">
  |                     <redirect view-id="/stemtables/supplier/supplier.xhtml" 
/>
  |             </navigation>
  |     </page>
  |     
  |     <page view-id="/stemtables/supplier/supplier.xhtml" 
login-required="true">
  |             <navigation from-action="#{supplierMaintenance.edit}">
  |                     <redirect 
view-id="/stemtables/supplier/edit_supplier.xhtml" />
  |             </navigation>
  |     </page>
  |     
  |     <page view-id="/stemtables/supplier/edit_supplier.xhtml" 
login-required="true">
  |             <navigation from-action="#{supplierMaintenance.save}">
  |                     <redirect view-id="/stemtables/supplier/supplier.xhtml" 
/>
  |             </navigation>
  |     </page>
  | 
  |     <page view-id="/stemtables/supplier/edit_supplier.xhtml" 
login-required="true">
  |             <navigation from-action="#{supplierMaintenance.cancel}">
  |                     <redirect view-id="/stemtables/supplier/supplier.xhtml" 
/>
  |             </navigation>
  |     </page>
  | 
  |     <!-- EXCEPTION HANDLING -->
  |     <exception class="org.jboss.seam.security.NotLoggedInException">
  |         <redirect view-id="/login.xhtml">
  |             <message severity="warn">You must be logged in to use this 
feature.</message>
  |         </redirect>
  |     </exception>
  | </pages>

web.xml
<web-app version="2.5"
  |     metadata-complete="true" 
  |     xmlns="http://java.sun.com/xml/ns/javaee";
  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  |     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";>
  | 
  |     <!--  Seam configuration -->
  |     <listener>
  | <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
  |     </listener>
  | 
  |     <!-- Propagate conversations across redirects -->
  |     <filter>
  |             <filter-name>Seam Redirect Filter</filter-name>
  |             
<filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>
  |     </filter>
  | 
  |     <filter-mapping>
  |             <filter-name>Seam Redirect Filter</filter-name>
  |             <url-pattern>*.seam</url-pattern>
  |     </filter-mapping>
  | 
  |     <servlet>
  |         <servlet-name>Seam Resource Servlet</servlet-name>
  |         
<servlet-class>org.jboss.seam.servlet.ResourceServlet</servlet-class>
  |     </servlet>
  |     
  |     <servlet-mapping>
  |         <servlet-name>Seam Resource Servlet</servlet-name>
  |         <url-pattern>/seam/resource/*</url-pattern>
  |     </servlet-mapping>
  |     
  |     <filter>
  |         <filter-name>Seam Filter</filter-name>
  |         <filter-class>org.jboss.seam.web.SeamFilter</filter-class>
  |     </filter>
  | 
  |     <filter-mapping>
  |         <filter-name>Seam Filter</filter-name>
  |         <url-pattern>/*</url-pattern>
  |     </filter-mapping>
  | 
  |     <!-- JSF -->
  |     <context-param>
  |             <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  |             <param-value>client</param-value>
  |     </context-param>
  | 
  |     <context-param>
  |             <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  |             <param-value>.xhtml</param-value>
  |     </context-param>
  | 
  |     <context-param>
  |             <param-name>facelets.DEVELOPMENT</param-name>
  |             <param-value>true</param-value>
  |     </context-param>
  | 
  |     <servlet>
  |             <servlet-name>Faces Servlet</servlet-name>
  |             <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  |             <load-on-startup>1</load-on-startup>
  |     </servlet>
  | 
  |     <servlet-mapping>
  |             <servlet-name>Faces Servlet</servlet-name>
  |             <url-pattern>*.seam</url-pattern>
  |     </servlet-mapping>
  | 
  |     <!-- JSF RI -->
  |     <listener>
  |         
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  |     </listener> 
  | 
  |     <session-config>
  |         <session-timeout>10</session-timeout> 
  |     </session-config>    
  | </web-app>

/stemtables/supplier/supplier.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml";
  |                     xmlns:ui="http://java.sun.com/jsf/facelets";
  |                             xmlns:h="http://java.sun.com/jsf/html";
  |                             xmlns:f="http://java.sun.com/jsf/core";
  |                             xmlns:s="http://jboss.com/products/seam/taglib";
  |                             xmlns:a="https://ajax4jsf.dev.java.net/ajax";
  |                             template="../../template.xhtml">
  | 
  |     <!-- content -->
  |     <ui:define name="content">
  |             <div class="section">
  |                     <h:form>
  |             
  |                         <h:dataTable value="#{suppliers}" var="supplier">
  |                             <h:column>#{supplier.supplierName}</h:column>
  |                             <h:column>#{supplier.address}</h:column>
  |                             <h:column>#{supplier.phone}</h:column>
  |                             <h:column>#{supplier.URL}</h:column>
  |                             <h:column>
  |                                     <h:commandButton value="Edit" 
action="#{supplierMaintenance.edit}" />
  |                             </h:column>
  |                             <h:column>
  |                                     <h:commandButton value="Delete" 
action="#{supplierMaintenance.delete}" />
  |                             </h:column>
  |                         </h:dataTable>
  |                         
  |                         <span class="errors">
  |                            <h:messages globalOnly="true"/>
  |                         </span>
  |                         
  |                     </h:form>
  |             </div>
  |     </ui:define>
  |     
  |     <!-- sidebar -->
  |     <ui:define name="sidebar">
  |             <h1>SIDEBAR SECTION</h1>
  |     </ui:define>
  | </ui:composition>

/stemtables/supplier/edit_supplier.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml";
  |                     xmlns:ui="http://java.sun.com/jsf/facelets";
  |                             xmlns:h="http://java.sun.com/jsf/html";
  |                             xmlns:f="http://java.sun.com/jsf/core";
  |                             xmlns:s="http://jboss.com/products/seam/taglib";
  |                             template="../../template.xhtml">
  | 
  |     <!-- content -->
  |     <ui:define name="content">
  |             <div class="section">
  |             <h:form>
  |                             <fieldset>
  |                                     <div>
  |                                             <h:outputLabel 
for="supplierName">Name: </h:outputLabel>
  |                                             <h:inputText id="username" 
value="#{supplierX.supplierName}" required="true">
  |                                                     <s:validate />
  |                                             </h:inputText>
  |                                             <div class="errors"><h:message 
for="supplierName" /></div>
  |                                     </div>
  |                                     <div>
  |                                             <h:outputLabel 
for="address">Address: </h:outputLabel>
  |                                             <h:inputText id="address" 
value="#{supplierX.address}">
  |                                                     <s:validate />
  |                                             </h:inputText>
  |                                             <div class="errors"><h:message 
for="address" /></div>
  |                                     </div>
  |                                     <div>
  |                                             <h:outputLabel 
for="phone">Phone: </h:outputLabel>
  |                                             <h:inputText id="phone" 
value="#{suppplierX.phone}">
  |                                                     <s:validate />
  |                                             </h:inputText>
  |                                             <div class="errors"><h:message 
for="phone" /></div>
  |                                     </div>
  |                                     <div>
  |                                             <h:outputLabel for="URL">URL: 
</h:outputLabel>
  |                                             <h:inputText id="URL" 
value="#{supplierX.URL}">
  |                                                     <s:validate />
  |                                             </h:inputText>
  |                                             <div class="errors"><h:message 
for="URL" /></div>
  |                                     </div>
  |                                     <div class="errors"><h:messages 
globalOnly="true" /></div>
  |                                     <div class="buttonBox">
  |                                             <h:commandButton 
action="#{supplierMaintenance.save}" value="Save">
  |                                                     
<s:conversationPropagation type="join" />
  |                                             </h:commandButton>
  |                                     </div>
  |                                     <div class="buttonBox"><h:commandButton 
action="#{supplierMaintenance.cancel}" value="Cancel" /></div>
  |                             </fieldset>
  |             </h:form>
  | 
  |                 <span class="errors">
  |                    <h:messages globalOnly="true" />
  |                 </span>
  |             </div>
  |     </ui:define>
  |     
  |     <!-- sidebar -->
  |     <ui:define name="sidebar">
  |             <h1>SIDEBAR SECTION</h1>
  |     </ui:define>
  | </ui:composition>

EAR structure:
anonymous wrote : 
  | EAR:
  | + jboss-seam-2.0.0.beta1.jar
  | + jboss-el-seam-2.0.0.beta1.jar
  | + ejb.jar
  | + web.war
  | 
  | web.war:
  | WEB-INF/components.xml
  | WEB-INF/faces-config.xml
  | WEB-INF/pages.xml
  | WEB-INF/web.xml
  | WEB-INF/libjboss-seam-ui-2.0.0.beta1.jar
  | WEB-INF/lib/jboss-seam-debug-2.0.0.beta1.jar
  | WEB-INF/lib/jsf-facelets-1.1.13.jar
  | 

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

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

Reply via email to