[jboss-user] [JBoss Seam] - Re: long running conversation problem

sunil.su do-not-reply at jboss.com
Mon Jul 9 21:42:33 EDT 2007


Here is the page

  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  | <html 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:a4j="https://ajax4jsf.dev.java.net/ajax">
  | <head>
  |  <link href="style.css" rel="stylesheet" type="text/css"/>
  | </head>
  | <body>
  | 
  | <h2>Create Org</h2>
  | 
  | <f:facet name="beforeInvalidField">
  |   <h:graphicImage styleClass="errorImg" value="error.png"/>
  | </f:facet>
  | <f:facet name="afterInvalidField">
  |   <s:message styleClass="errorMsg" />
  | </f:facet>
  | <f:facet name="aroundInvalidField">
  |   <s:div styleClass="error"/>
  | </f:facet>
  | <h:form>
  | 	<h1>Org</h1>
  | 	<fieldset> 
  | 		<h:commandButton value="Org" action="#{orgmanager.start}" styleClass="button" /> 
  | 	</fieldset>
  | </h:form>
  | <h:form>
  | <s:validateAll> 
  | <table>
  |   <tr>
  |     <td>Org Name:</td>
  |     <td>
  | 		<s:decorate>
  | 	        <h:inputText value="#{orgEntry.name}" size="32">
  | 	        </h:inputText>
  | 	    </s:decorate>          
  |     </td>
  |   </tr>
  |   
  |   <tr>
  |     <td>Org Code:</td>
  |     <td>
  |       <a4j:outputPanel id="orgcode">
  |         <f:subview rendered="#{!empty(codeErrorMsg)}">
  |           <f:verbatim><div class="error"></f:verbatim>
  |           <h:graphicImage styleClass="errorImg" value="error.png"/>
  |         </f:subview>  
  |         
  |           <h:inputText value="#{orgmanager.orgCode}" size="32">
  |             <a4j:support event="onblur" reRender="orgcode"/>
  |           </h:inputText>
  |         <f:subview rendered="#{!empty(codeErrorMsg)}">
  |           <h:outputText styleClass="errorMsg" 
  |                     value="#{codeErrorMsg}"/>
  |           <f:verbatim></div></f:verbatim>
  |         </f:subview>     
  |       </a4j:outputPanel>
  |     </td>
  |   </tr>
  |   
  |   <tr>
  |     <td>Org Description:</td>
  |     <td>
  | 		<s:decorate>
  | 	        <h:inputText value="#{orgEntry.description}" size="32">
  | 	        </h:inputText>
  | 	    </s:decorate>          
  |     </td>
  |   </tr>
  |   
  |   <tr>
  |     <td>Org Level:</td>
  |     <td>
  |       <a4j:outputPanel id="orglevel">
  |         <s:decorate>
  | 		<h:panelGroup>
  | 			<h:selectOneMenu value = "#{orgLevelStr}">
  | 				<f:selectItems value="#{orgLevels}" />
  | 				<a4j:support event="onchange" action="#{orgmanager.getParentOrgCodes}"
  | 					ajaxSingle="true" reRender="orgparent" />
  | 			</h:selectOneMenu>
  | 		</h:panelGroup>
  |         </s:decorate>
  |       </a4j:outputPanel>
  |     </td>
  |   </tr>
  |   
  |   <tr>
  |     <td>Org Parent:</td>
  |     <td>
  |       <a4j:outputPanel id="orgparent">
  |         <s:decorate>
  | 		<h:panelGroup>
  | 			<h:selectOneMenu value = "#{orgmanager.parentOrgCode}">
  | 				<s:selectItems value="#{parentOrgCodes}" var="parentOrgCode" label="#{parentOrgCode}" />
  | 			</h:selectOneMenu>
  | 		</h:panelGroup>
  |         </s:decorate>
  |       </a4j:outputPanel>
  |     </td>
  |   </tr>
  | </table>
  | </s:validateAll>
  |   
  | <h:commandButton type="submit" 
  |                  value="Create Org"
  |                  action="#{orgmanager.createOrg}"/>
  | </h:form>
  | 
  | <p>Orgs:</p>
  | 
  | <h:form>
  | <h:dataTable id="orgList" value="#{orgList}" var="org">
  |   <h:column>
  |     <f:facet name="header">
  |       <h:outputText value="Name" />
  |     </f:facet>
  |     <h:outputText value="#{org.name}"/>
  |   </h:column>
  |   <h:column>
  |     <f:facet name="header">
  |       <h:outputText value="Code" />
  |     </f:facet>
  |     <s:link value="#{org.code}" action="#{orgmanager.selectOrg}" propagation="join"/>
  |   </h:column>
  |   <h:column>
  |     <f:facet name="header">
  |       <h:outputText value="Description" />
  |     </f:facet>
  |     <h:outputText value="#{org.description}"/>
  |   </h:column>
  |   <h:column>
  |     <f:facet name="header">
  |       <h:outputText value="Level" />
  |     </f:facet>
  |     <h:outputText value="#{org.orgLevel.name}"/>
  |   </h:column>
  | </h:dataTable>
  | </h:form>
  | </body>
  | </html>
  | 

The code for the bean is 

  | 
  | @Stateful
  | @Scope(ScopeType.CONVERSATION)
  | @Name("orgmanager")
  | @Conversational(ifNotBegunOutcome="menu")
  | public class OrgManagerBean implements OrgManager, Serializable {
  |     @Logger
  |     private Log log;
  |     
  |     @PersistenceContext(type = EXTENDED)
  |     private EntityManager em;
  |     
  |     @In(create=true,required = false) @Out(required = false)
  |     private Org orgEntry;
  |     
  |     @EJB OrgDAO orgDAO;
  |     @EJB OrgLevelDAO orgLevelDAO;
  |     
  |     @Out(required = false)
  |     private List<String> parentOrgCodes = new ArrayList<String>();
  |     @Out(required = false)
  |     private List<SelectItem> orgLevels = new ArrayList<SelectItem>();
  |     
  |     @DataModel
  |     private List<Org> orgList;
  |     
  |     @DataModelSelectionIndex
  |     private int orgIndex;
  |     
  |     private OrgLevel orgLevel;
  |     
  |     //@Begin(join=true)
  |     public String start() {
  |         //loadOrgs();
  |         //loadOrgLevels();
  |         return "org";
  |     }
  |     
  |     @End
  |     public String createOrg() {
  |         Org parentOrg = null;
  |         orgLevel = orgLevelDAO.findByName(orgLevelStr);
  |         orgEntry.setOrgLevel(orgLevel);
  |         em.persist(orgEntry);
  |         if (parentOrgCode != null) {
  |             parentOrg = orgDAO.findOrgByCode(parentOrgCode);
  |             OrgLink orgLink = new OrgLink(parentOrg, orgEntry, new Date());
  |             em.persist(orgLink);
  |         }
  |         return "org";
  |     }
  | 
  |     public String listOrgLevel() {
  |         // TODO Auto-generated method stub
  |         return null;
  |     }
  |     public void loadOrgLevels() {
  |         List<OrgLevel> list = orgLevelDAO.findAll();
  |         orgLevels = new ArrayList<SelectItem>();
  |         for (OrgLevel level : list) {
  |             orgLevels.add(new SelectItem(level.getName(), level.getName()));
  |         }
  |         log.info("orgLevels size = " + orgLevels.size());
  |     }
  |     
  |     @Begin(join=true) @Create
  |     public void init() {
  |         log.info("init() called");
  |         loadOrgs();
  |         loadOrgLevels();
  |     }
  |     public void loadOrgs() {
  |         orgList = orgDAO.findAll();
  |     }
  |     
  |     public String selectOrg() {
  |         log.info("Index =" + orgIndex);
  |         System.out.println("Index =" + orgIndex);
  |         orgEntry = orgList.get(orgIndex);
  |         log.info("Selected Code: " + orgEntry.getCode());
  |         return "org";
  |     }
  | 
  |     @Out(required = false)
  |     String codeErrorMsg;
  |     
  |     @In(required = false) 
  |     String orgLevelStr;
  |     
  |     public void getParentOrgCodes() {
  |         log.info("-> getParentOrgCodes");
  |         if (parentOrgCodes != null)
  |             parentOrgCodes.clear();
  |         if (orgLevelStr != null) {
  |             orgLevel = orgLevelDAO.findByName(orgLevelStr);
  |             orgEntry.setOrgLevel(orgLevel);
  |             int level = orgEntry.getOrgLevel().getLevel();
  |             List<Org> list = orgDAO.findOrgsAboveLevel(level);
  |             for (Org o : list) {
  |                 parentOrgCodes.add(o.getCode());
  |             }
  | 
  |         }
  |     }
  |     
  |     String orgCode;
  | 
  |     public void setOrgCode(String orgCode) {
  |         this.orgCode = orgCode;
  |         if (orgDAO.findOrgByCode(orgCode) != null) {
  |             codeErrorMsg = "Warning: \"" + orgCode + 
  |             "\" is already in the system.";
  |         }
  |         else {
  |             codeErrorMsg = "";
  |             orgEntry.setCode(orgCode);
  |         }
  |     }
  | 
  |     public String getOrgCode() {
  |         return orgCode;
  |     }
  |     
  |     String parentOrgCode;
  |     public String getParentOrgCode() {
  |         return parentOrgCode;
  |     }
  |     public void setParentOrgCode(String pOC) {
  |         parentOrgCode = pOC;
  |     }
  |     
  |     @Destroy @Remove
  |     public void destroy() {
  |         log.info("destroy() called");
  |     }
  | }
  | 

Thanks....

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

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



More information about the jboss-user mailing list