[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