jboss-seam-1.2.0
jboss-4.0.5.GA
jdk1.5.0_0.8

the following is my way to do CRUD,it works!
but I'm not sure if it will cause some potential problems ,like performance.

please show me yours!

I like seam so much!

package org.kaiak.model;
  | 
  | import java.io.Serializable;
  | 
  | import javax.persistence.Entity;
  | import javax.persistence.GeneratedValue;
  | import javax.persistence.Id;
  | import javax.persistence.Table;
  | import javax.persistence.Version;
  | 
  | import org.hibernate.validator.Length;
  | import org.jboss.seam.annotations.Name;
  | 
  | @Entity
  | @Name("permission")
  | @Table(name = "t_myor_permission")
  | public class Permission implements Serializable {
  |     
  |     //seam-gen attributes (you should probably edit these)
  |     private Long id;
  |     private Integer version;
  |     private String name;
  |     
  |     //add additional entity attributes
  |     
  |     //seam-gen attribute getters/setters with annotations (you probably 
should edit)
  |             
  |     @Id @GeneratedValue
  |     public Long getId() {
  |          return id;
  |     }
  | 
  |     public void setId(Long id) {
  |          this.id = id;
  |     }
  |     
  |     @Version
  |     public Integer getVersion() {
  |          return version;
  |     }
  | 
  |     private void setVersion(Integer version) {
  |          this.version = version;
  |     }       
  |     
  |     @Length(max=20)
  |     public String getName() {
  |          return name;
  |     }
  | 
  |     public void setName(String name) {
  |          this.name = name;
  |     }       
  | }
  | 

  | package org.kaiak.service;
  | 
  | import javax.ejb.Local;
  | 
  | @Local
  | public interface PermissionManager {  
  |     public String persist();
  |     public String edit();
  |     public String delete();
  |     public void findPermissions();  public void destroy();
  |     
  |    //add additional interface methods here
  | }
  | 
  | package org.kaiak.service;
  | 
  | import java.util.List;
  | 
  | import javax.ejb.Remove;
  | import javax.ejb.Stateful;
  | import javax.persistence.EntityManager;
  | 
  | import org.jboss.seam.annotations.Begin;
  | import org.jboss.seam.annotations.Destroy;
  | import org.jboss.seam.annotations.End;
  | import org.jboss.seam.annotations.Factory;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Logger;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Out;
  | import org.jboss.seam.annotations.datamodel.DataModel;
  | import org.jboss.seam.annotations.datamodel.DataModelSelection;
  | import org.jboss.seam.core.FacesMessages;
  | import org.jboss.seam.log.Log;
  | import org.kaiak.model.Permission;
  | 
  | @Stateful
  | @Name("permissionManager")
  | public class PermissionManagerBean implements PermissionManager {
  | 
  |     @Logger
  |     private Log log;
  | 
  |     @In
  |     FacesMessages facesMessages;
  | 
  |     @In
  |     EntityManager entityManager;
  | 
  |     @DataModel
  |     private List<Permission> permissionList;
  | 
  |     @In(required = false)
  |     @Out(required = false)
  |     private Permission permission;
  | 
  |     @DataModelSelection
  |     private Permission selectedPermission;
  | 
  |     @Begin
  |     @Factory("permissionList")      public void findPermissions() {
  |             permissionList = entityManager.createQuery(
  |                             "select perm from Permission perm order by 
perm.id")
  |                             .getResultList();
  |     }
  | 
  |     @End(beforeRedirect = true)
  |     public String persist() {
  |             entityManager.persist(permission);
  |             return "list";
  |     }
  | 
  |     @End(beforeRedirect = true)
  |     public String delete() {
  |             permission = selectedPermission;
  |             permissionList.remove(permission);
  |             entityManager.remove(permission);
  |             return "list";
  |     }
  | 
  |     public String edit() {
  |             if (selectedPermission != null)
  |                     permission = selectedPermission;
  |             return "form";
  |     }
  | 
  |     @Destroy
  |     @Remove
  |     public void destroy() {
  |     }
  | }
  | 
  | 


  | permissionList.xhtml
  | 
  | <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  |                              
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
  | <ui:composition xmlns="http://www.w3.org/1999/xhtml";
  |                 xmlns:s="http://jboss.com/products/seam/taglib";
  |                 xmlns:ui="http://java.sun.com/jsf/facelets";
  |                 xmlns:f="http://java.sun.com/jsf/core";
  |                 xmlns:h="http://java.sun.com/jsf/html";
  |                 template="layout/template.xhtml">
  |                        
  | <ui:define name="body">
  | 
  |     <h1>permissionList</h1>
  |     <p>Generated list page</p>
  |     
  |     <h:messages globalOnly="true" styleClass="message"/>
  |     
  |     <h:outputText value="No permission exists" 
  |             rendered="#{permissionList.rowCount==0}"/>
  |     <h:dataTable id="permissionList" var="p"
  |             value="#{permissionList}" 
  |             rendered="#{permissionList.rowCount>0}">
  |         <h:column>
  |             <f:facet name="header">Id</f:facet>
  |             #{p.id}
  |         </h:column>
  |         <h:column>
  |             <f:facet name="header">Name</f:facet>
  |             <s:link id="permission" value="#{p.name}" 
action="#{permissionManager.edit}"/>
  |         </h:column>
  |         <h:column>
  |             <f:facet name="header">Action</f:facet>
  |             <s:link id="user" value="Delete" 
action="#{permissionManager.delete}"/>
  |         </h:column>
  |     </h:dataTable>
  |     
  |     <div class="actionButtons"><h3><h:outputText 
value="#{permission.name}"/></h3>
  |         <s:button id="done" value="Create permission"
  |             action="#{permissionManager.edit}"/>                      
  |     </div>
  |     
  | </ui:define>
  | 
  | </ui:composition>
  | 
  | 
  | 

permissionForm.xhtml
  | 
  | <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  |                              
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
  | <ui:composition xmlns="http://www.w3.org/1999/xhtml";
  |                 xmlns:s="http://jboss.com/products/seam/taglib";
  |                 xmlns:ui="http://java.sun.com/jsf/facelets";
  |                 xmlns:f="http://java.sun.com/jsf/core";
  |                 xmlns:h="http://java.sun.com/jsf/html";
  |                 template="layout/template.xhtml">
  |                        
  | <ui:define name="body">
  | 
  |     <h1>permissionForm</h1>
  |     <p>Generated edit page</p>
  |     
  |     <h:messages globalOnly="true" styleClass="message"/>
  |     
  |     <h:form id="perm">
  |         <div class="dialog">
  |         <s:validateAll>
  |             <div class="prop">
  |                 <span class="name">Name</span>
  |                 <span class="value">
  |                     <s:decorate>
  |                         <h:inputText id="name" required="true"
  |                             value="#{permission.name}"/>
  |                     </s:decorate>
  |                 </span>
  |             </div>
  |         </s:validateAll>
  |         </div>
  |         <div class="actionButtons">
  |             <h:commandButton id="save" value="Save" 
  |                 action="#{permissionManager.persist}"/>                     
          
  |             <s:button id="done" value="Done"
  |                 propagation="end" view="/permissionList.xhtml"/>            
          
  |         </div>
  |     </h:form>
  |     
  | </ui:define>
  | 
  | </ui:composition>
  | 
  | 
  | 

pages.xml
  | 
  | <!DOCTYPE pages PUBLIC
  |           "-//JBoss/Seam Pages Configuration DTD 1.2//EN"
  |           "http://jboss.com/products/seam/pages-1.2.dtd";>
  | 
  | <pages no-conversation-view-id="/home.xhtml"
  |                  login-view-id="/login.xhtml">
  | 
  |     <page view-id="*">
  |         <navigation>
  |             <rule if-outcome="home">
  |                 <redirect view-id="/home.xhtml"/>
  |             </rule>
  |         </navigation>
  |     </page>
  |     
  |     <page view-id="/permissionList.xhtml">
  |         <navigation>
  |             <rule if-outcome="list">
  |                 <redirect view-id="/permissionList.xhtml"/>
  |             </rule>
  |             <rule if-outcome="form">
  |                 <redirect view-id="/permissionForm.xhtml"/>
  |             </rule>
  |         </navigation>
  |     </page>
  |     
  |     <page view-id="/permissionForm.xhtml">
  |         <navigation>
  |             <rule if-outcome="list">
  |                 <redirect view-id="/permissionList.xhtml"/>
  |             </rule>
  |         </navigation>
  |     </page>
  |     
  |     <exception class="org.jboss.seam.framework.EntityNotFoundException">
  |         <redirect view-id="/error.xhtml">
  |             <message>Not found</message>
  |         </redirect>
  |     </exception>
  |     
  |     <exception class="javax.persistence.EntityNotFoundException">
  |         <redirect view-id="/error.xhtml">
  |             <message>Not found</message>
  |         </redirect>
  |     </exception>
  |     
  |     <exception class="javax.persistence.OptimisticLockException">
  |         <end-conversation/>
  |         <redirect view-id="/error.xhtml">
  |             <message>Another user changed the same data, please try 
again</message>
  |         </redirect>
  |     </exception>
  |     
  |     <exception class="org.jboss.seam.security.AuthorizationException">
  |         <redirect>
  |             <message>You don't have permission to do this</message>
  |         </redirect>
  |     </exception>
  |     
  |     <exception class="org.jboss.seam.security.NotLoggedInException">
  |         <redirect view-id="/login.xhtml">
  |             <message>Please log in first</message>
  |         </redirect>
  |     </exception>
  |      
  |     <exception>
  |         <redirect view-id="/error.xhtml">
  |             <message>Unexpected error, please try again</message>
  |         </redirect>
  |     </exception>
  | </pages>
  | 

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

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

Reply via email to