SelectOneMenu entity not valid
norad2 Apr 3, 2008 6:33 PMI have a page that is used for creating new Addresses
entities.
One of the properties of an Addresses
is another entity called IpBank
.
@Entity @Name("addresses") @Table(name = "ADDRESSES") public class Addresses implements java.io.Serializable { private Integer addressId; private String addressName; private IpBank ipBank; private Integer ipOctet; . . . @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "IP_BANK_ID", nullable = false) @NotNull public IpBank getIpBank() { return this.ipBank; } public void setIpBank(IpBank ipBank) { this.ipBank = ipBank; } . . . }
I want to provide a select one menu to be used during an Addresses
creation.
The following code shows the available IpBanks but when I select one and try to save
I get a Faces Message saying that the value is not valid.
08:45:43,496 INFO [lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been displayed. sourceId=createAddressForm:ipBankDecoration:j_id48[severity=(ERROR 2), summary=(value is not valid), detail=(value is not valid)]
<h:selectOneMenu value="#{addresses.ipBank}" required="true"> <s:selectItems value="#{ipBanks}" var="ipbank" label="#{ipbank.ipRange}" noSelectionLabel="Please Select..."/> <s:convertEntity /> </h:selectOneMenu>
Here is the bean that provides the ipBanks list.
@Stateful @Name("IpBankHome") public class IpBankHomeBean implements IpBankHome { @PersistenceContext(type=EXTENDED) private EntityManager em; @DataModel private List<IpBank> ipBanks; @Factory("ipBanks") public void getIpBanks() { ipBanks = em.createQuery("select i from IpBank i").getResultList(); } @Destroy @Remove public void destroy() {} }
And the bean used to save a new address:
@Stateful @Name("AddressesHome") public class AddressesHomeBean implements AddressesHome { @Logger private Log log; @PersistenceContext(type=EXTENDED) private EntityManager em; @In(required=false) @Out(required=false) private Addresses addresses; @Begin public void createAddress() { addresses = new Addresses(); } @End public void saveAddress() { em.persist(addresses); log.info("New address (address id #{address.addressId} created"); } @Destroy @Remove public void destroy() {} }
Can anyone spot what I am doing wrong here?