[jboss-user] [JBoss Seam] - Re: SelectOneMenu and OneToMany Seam 2.0 setup

thinkblue do-not-reply at jboss.com
Wed Oct 17 20:21:52 EDT 2007


Here is what I have so far:

Here is my xhtml file:


  | 
  | <!DOCTYPE html 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: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="http://richfaces.org/a4j"
  | 				xmlns:rich="http://richfaces.org/rich"
  | 				template="template.xhtml">
  | 
  | <!-- content -->
  | 
  | 	<ui:define name="content">
  | 	<h:form>
  | 	<div id="mainHeader"><h1>Project List</h1></div>
  | 	<div id="mainContent">
  | 		<div id="sectionHeader"><h2>About The Person</h2></div>
  | 			<div id="projectLeftSide">
  | 				<div id="entry">
  | 					<label>Person Name:</label>
  | 					<div class="input">
  | 						<h:inputText id="personName" value="#{person.personName}" />
  | 					</div>
  | 				</div>
  | 											
  | 				<div id="entry">
  | 					<label>Zip Code:</label>
  | 					<div class="input">
  |                                                                         <h:selectOneMenu value="#{person.zipCodes}" id="zipCodes">
  | 							<s:selectItems value="#{zipCodes.resultList}" var="zip" label="#{zip.zipcodeNumber}" />
  | 							<s:convertEntity />
  | 						</h:selectOneMenu>
  | 					</div>
  | 				</div>
  | 			</div>
  | 					
  | 			<div id="buttonSection">
  | 				<div class="button">	
  | 					<h:commandButton value="Add" action="#{thePerson.addNewPerson}"/>
  | 				</div>
  | 				<div class="button">
  | 					<s:button id="cancelButton" value="Cancel" view="/main.xhtml" />
  | 				</div>
  | 			</div>	
  | 	</div>
  | 	<div id="mainFooter"> </div>
  | 	</h:form>
  | 
  | 	</ui:define>
  | </ui:composition>
  | 
  | 

In bold red is what I want to do, just don't know how the backend should be coded...

Here is my components.xml file:


  | <?xml version="1.0" encoding="UTF-8"?>
  | <components xmlns="http://jboss.com/products/seam/components"
  |             xmlns:core="http://jboss.com/products/seam/core"
  |             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |             xsi:schemaLocation=
  |                 "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.0.xsd
  | 
  |                  http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd">
  | 
  |     <core:init jndi-pattern="@jndiPattern@" debug="true"/>
  | 
  |     <core:manager conversation-timeout="120000"
  |                   concurrent-request-timeout="500"
  |                   conversation-id-parameter="cid"/>
  | 
  | 
  | </components>
  | 

Here is my persistence.xml file:


  | <?xml version="1.0" encoding="UTF-8"?>
  | <persistence xmlns="http://java.sun.com/xml/ns/persistence" 
  |              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |              xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
  |              version="1.0">
  | 
  | 	<persistence-unit name="myDatabase">
  |       <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |       <jta-data-source>java:/OracleDS</jta-data-source>
  |       <properties>
  |          <property name="hibernate.hbm2ddl.auto" value="none"/>
  |       </properties>
  | 	</persistence-unit>
  | </persistence>
  | 

Here is my main entity bean:


  | package com.org.selectonemenu.entity;
  | 
  | import javax.persistence.Column;
  | import javax.persistence.Entity;
  | import javax.persistence.FetchType;
  | import javax.persistence.Id;
  | import javax.persistence.JoinColumn;
  | import javax.persistence.ManyToOne;
  | import javax.persistence.Table;
  | 
  | import org.jboss.seam.annotations.Name;
  | 
  | @Entity
  | @Name("person")
  | @Table(name = "PERSON")
  | public class Person implements java.io.Serializable {
  | 
  | 	private long personId;
  | 	private ZipCodes zipCodes;
  | 	private String personName;
  | 
  | 	public Person() {
  | 	}
  | 
  | 	public Person(long personId) {
  | 		this.personId = personId;
  | 	}
  | 
  | 	public Person(long personId, ZipCodes zipCodes, String personName) {
  | 		this.personId = personId;
  | 		this.zipCodes = zipCodes;
  | 		this.personName = personName;
  | 	}
  | 
  | 	@Id
  | 	@Column(name = "PERSON_ID", unique = true, nullable = false, precision = 12, scale = 0)
  | 	public long getPersonId() {
  | 		return this.personId;
  | 	}
  | 
  | 	public void setPersonId(long personId) {
  | 		this.personId = personId;
  | 	}
  | 
  | 	@ManyToOne(fetch = FetchType.LAZY)
  | 	@JoinColumn(name = "ZIPCODE_ID")
  | 	public ZipCodes getZipCodes() {
  | 		return this.zipCodes;
  | 	}
  | 
  | 	public void setZipCodes(ZipCodes zipCodes) {
  | 		this.zipCodes = zipCodes;
  | 	}
  | 
  | 	@Column(name = "PERSON_NAME", length = 100)
  | 	public String getPersonName() {
  | 		return this.personName;
  | 	}
  | 
  | 	public void setPersonName(String personName) {
  | 		this.personName = personName;
  | 	}
  | 
  | }
  | 

Here is the lookup Entity Bean:



  | package com.org.selectonemenu.entity;
  | 
  | import java.util.HashSet;
  | import java.util.Set;
  | import javax.persistence.CascadeType;
  | import javax.persistence.Column;
  | import javax.persistence.Entity;
  | import javax.persistence.FetchType;
  | import javax.persistence.Id;
  | import javax.persistence.OneToMany;
  | import javax.persistence.Table;
  | 
  | import org.jboss.seam.annotations.Name;
  | 
  | @Entity
  | @Name("zipcodes")
  | @Table(name = "ZIP_CODES")
  | public class ZipCodes implements java.io.Serializable {
  | 
  | 	private long zipcodeId;
  | 	private String zipcodeNumber;
  | 	private Set<Person> persons = new HashSet<Person>(0);
  | 
  | 	public ZipCodes() {
  | 	}
  | 
  | 	public ZipCodes(long zipcodeId) {
  | 		this.zipcodeId = zipcodeId;
  | 	}
  | 
  | 	public ZipCodes(long zipcodeId, String zipcodeNumber, Set<Person> persons) {
  | 		this.zipcodeId = zipcodeId;
  | 		this.zipcodeNumber = zipcodeNumber;
  | 		this.persons = persons;
  | 	}
  | 
  | 	@Id
  | 	@Column(name = "ZIPCODE_ID", unique = true, nullable = false, precision = 12, scale = 0)
  | 	public long getZipcodeId() {
  | 		return this.zipcodeId;
  | 	}
  | 
  | 	public void setZipcodeId(long zipcodeId) {
  | 		this.zipcodeId = zipcodeId;
  | 	}
  | 
  | 	@Column(name = "ZIPCODE_NUMBER", length = 50)
  | 	public String getZipcodeNumber() {
  | 		return this.zipcodeNumber;
  | 	}
  | 
  | 	public void setZipcodeNumber(String zipcodeNumber) {
  | 		this.zipcodeNumber = zipcodeNumber;
  | 	}
  | 
  | 	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "zipCodes")
  | 	public Set<Person> getPersons() {
  | 		return this.persons;
  | 	}
  | 
  | 	public void setPersons(Set<Person> persons) {
  | 		this.persons = persons;
  | 	}
  | 
  | }
  | 

And finally here is my sfsb that I use to persist to the database:


  | package com.org.selectonemenu.sfsb;
  | 
  | import javax.ejb.Remove;
  | import javax.ejb.Stateful;
  | import javax.persistence.EntityManager;
  | import javax.persistence.PersistenceContext;
  | 
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Destroy;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Out;
  | import org.jboss.seam.annotations.Scope;
  | 
  | import com.org.selectonemenu.entity.Person;
  | import com.org.selectonemenu.interfaces.PersonMgr;
  | 
  | @Stateful
  | @Name("thePerson")
  | @Scope(ScopeType.SESSION)
  | public class PersonSFSB implements PersonMgr {
  | 	
  | 	@PersistenceContext
  | 	private EntityManager entityManager;
  | 	
  | 	@In(required = false)
  | 	@Out(required = false)
  | 	private Person person;
  | 	
  | 	
  | 	public void addNewPerson() {
  | 		Person addPerson = person;
  | 
  | 		addPerson.setZipCodes(person.getZipCodes());
  | 		addPerson.setPersonName(person.getPersonName());
  | 
  | 		entityManager.persist(addPerson);
  | 
  | 	}
  | 	
  | 	@Destroy
  | 	@Remove
  | 	public void destroy() {
  | 	}
  | }
  | 

So out of these files what do I need to change and what files do I need to add...As I mentioned before I am using the latest Seam Snapshot...I'm on JBoss Server 4.2.1

Thank you for any help that anyone could provide to me.

Blue



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

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




More information about the jboss-user mailing list