[jboss-user] [JBoss Seam] - my CRUD way, is it right? show yours please!
kaiak
do-not-reply at jboss.com
Sun Mar 18 23:15:09 EDT 2007
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
More information about the jboss-user
mailing list