It's exactly CRUD what I'd like to do.
I used Seam-gen to setup the project and to create my forms (originaly).
here us my current code (slightly simplified)
*** person.java ***
@Entity
@Name("person")
public class person implements Serializable {
        private Long id;
        private String name;
        private String firstName;
        
        @Id
        @GeneratedValue
        public Long getId() {..}
        public void setId(Long id) {..}
        
        @Length(min=3, max=120)
        public String getName() {..}
        public void setName(String name) {..}
        
        public String getFirstName() {..}
        public void setFirstName(String firstName) {..}

*** PersonManagerBean.java ***
@Stateful
@Scope(ScopeType.SESSION)
@Name("personManager")
public class PersonViewerBean implements PersonManager {

        @Logger 
        private Log log;
        
        @In(required=false)
        @Out
        private List  personList;
        
        @DataModel
        private List personsDataModel;
        
        @DataModelSelection
        @Out(required=false)
        private Person person;
        
        @PersistenceContext(type=PersistenceContextType.EXTENDED)
        private EntityManager em;
        
        @Factory("personsDataModel")
        public void findPersons() {
                personsDataModel = em.createQuery("from Person r order by 
r.name desc").getResultList();
                personList = personssDataModel;
        }

        @Remove @Destroy
        public void destroy(){}
}

*** EditPersonBean ***
@Stateful
@Name("editperson")
public class EditpersonBean implements Editperson {

        @Logger 
        private Log log;
        
        @PersistenceContext(type=PersistenceContextType.EXTENDED)
        private EntityManager em;
        
        @In 
        FacesMessages facesMessages;
        
        @In(required=false)
        @Out
        private Person person;
        
        @In
        @Out
        private List  personList;
        
        @Begin
        public void newPerson() {
                person = new person();
        }
        
        @End
        public void savePerson()
        {
                List existing = new ArrayList();
                existing = em.createQuery("select name from Person where 
name=#{person.name}").getResultList();
                if (existing == null || existing.size() == 0) {
                        em.persist(person);
                        personList.add(person);
                }
                else {
                        facesMessages.add("a person with this name already 
exists! (name=#{person.name})");
                }
        }
        
        @End
        public void updateperson()
        {
                em.persist(person);
        }
        
        @Begin
        public void editperson(person r) {
                this.person = em.merge(r);
        }
        

        public person getperson() { ..}
        public void setperson(person person) {...}
        
        @Remove @Destroy
        public void destroy(){}
}

****** view.xhtml ******
...
<rich:panel>
                                <f:facet name="header">Welcome!</f:facet>
                                MY PERSON:
                                <h:outputText value="nothing to display" 
rendered="#{personsDataModel.rowCount==0}" />
                                <h:dataTable var="person" 
value="${personsDataModel}" rendered="#{personsDataModel.rowCount>0}">
                                        <h:column>
                                                <f:facet name="header">
                                                        <h:outputText 
value="Name" />
                                                </f:facet>
                                                <h:commandLink 
value="#{person.name}" action="#{personManager.select}" /> <!-- action does 
nothing -->
                                        </h:column>
                                        <h:column>
                                                <f:facet name="header">
                                                        <h:outputText 
value="Vorname" />
                                                </f:facet>
                                                <h:commandLink 
value="#{person.firstName}" action="#{personManager.select}" />
                                        </h:column>
                                        <h:column>
                                          <s:link id="editperson" value="edit" 
action="#{editperson.editPerson(person)}" />
                                        </h:column>
                                </h:dataTable>
                                <h:commandButton value="refresh" 
action="#{personManager.findPersons}" />
                                <h:commandButton value="new entry" 
action="#{editperson.newPerson}" />
                                <h3><h:outputText value="#{rower.email}" /></h3>
                        </rich:Panel>
...


***** edit.xhtml ****
....
<rich:panel>
                                <f:facet name="header">editPerson</f:facet>
                                <s:decorate id="firstnameDecoration" 
template="layout/edit.xhtml">
                                        <ui:define 
name="label">Vorname</ui:define>
                                        <h:inputText id="firstname" 
required="false" value="#{person.firstName}" />
                                </s:decorate>
                                <s:decorate id="nameDecoration" 
template="layout/edit.xhtml">
                                        <ui:define name="label">Name</ui:define>
                                        <h:inputText id="name" required="true" 
value="#{person.name}"/>
                                </s:decorate>
...

***************************
Logging, Comments, some other stuff was left out.

when pressing the 'new' or 'edit' Button a new conversation starts and my List 
(personList) is copied into the conversation-context. At the end of the 
conversation I'd like to copy it back to the Session.personList.
How? possible? did I missunderstand something?

thanks
Daniel


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

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

Reply via email to