Converters, SelectItems
jumapama Oct 13, 2007 4:22 PMHello, i have a problem which i have spent a lot of time. Somebody can show me a converter and selectItems example. I have the next code:
@Name("cuentaConverter") @org.jboss.seam.annotations.faces.Converter(forClass=Cuenta.class) public class CuentaConverter implements Converter, Serializable{ private static final long serialVersionUID = 1L; @In(create=true) private EntityManager entityManager; @Transactional public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException { String id=value; if(id!=null) return entityManager.find(Cuenta.class, id); return null; } public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException { if(value instanceof Cuenta){ Cuenta cuenta=(Cuenta) value; return cuenta.getIdCuenta().toString(); } else return null; } } @Name("login") @Scope (SESSION) @Stateful public class LoginFacade implements LoginFacadeLocal{ @PersistenceContext private EntityManager entityManager; @In(required=false) @Out(required=false) private Cliente user; @In(required=false) @Out(required=false) private Cuenta account; public void setUser(Cliente persona){ this.user=persona; } public Cliente getUser(){ return this.user; } public void setAccount(Cuenta cuenta){ this.account=cuenta; } public Cuenta getAccount(){ return this.account; } public Cliente findPersonaByPassword(){ Cliente entity = null; try { entity=(Cliente)entityManager.createQuery("SELECT OBJECT(c) FROM Cliente c " + "WHERE c.password=#{cliente.password}") .getSingleResult(); } catch (NoResultException noneFound) { } return entity; } public Cliente findPersonaByUsuario(){ Cliente entity = null; try { entity=(Cliente)entityManager.createQuery("SELECT OBJECT(c) FROM Cliente c " + "WHERE c.usuario=#{cliente.usuario}") .getSingleResult(); } catch (NoResultException noneFound) { } return entity; } @Create public String valida(){ Cliente cliente; if((cliente=findPersonaByUsuario())!=null && findPersonaByPassword()!=null) { setUser(cliente); if (user instanceof Administrador)return "administradores"; else if (user instanceof Cliente) return "clientes"; } return "clientes"; } @Destroy @Remove public void destroy(){} } <h:form> <h:panelGroup> <h:selectOneMenu id="cuenta" value="#{account}"> <s:selectItems value="#{user.cuentas}" var="c" label="#{c.idCuenta}" /> <h:message for="cuenta"></h:message> </h:selectOneMenu> </h:panelGroup> <h:commandButton type="submit" action="#{clienteFacade.disponibleCuenta}" /> </h:form> Config Files <?xml version="1.0" encoding="UTF-8"?> <components xmlns="http://jboss.com/products/seam/components" xmlns:core="http://jboss.com/products/seam/core" xmlns:persistence="http://jboss.com/products/seam/persistence" xmlns:drools="http://jboss.com/products/seam/drools" xmlns:security="http://jboss.com/products/seam/security" xmlns:web="http://jboss.com/products/seam/web" xmlns:mail="http://jboss.com/products/seam/mail" 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/persistence http://jboss.com/products/seam/persistence-2.0.xsd http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.0.xsd http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.0.xsd http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.0.xsd http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.0.xsd http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd"> <core:manager conversation-timeout="120000"/> <core:init jndi-pattern="BancoPopular/#{ejbName}/local" debug="true" /> <persistence:managed-persistence-context name="entityManager" persistence-unit-jndi-name="java:/uiEntityManagerFactory" /> <component name="org.jboss.seam.ui.entityConverter"> <property name="entityManager">#{em}</property> </component> <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- Seam --> <listener> <listener-class> org.jboss.seam.servlet.SeamListener </listener-class> </listener> <!-- JSF --> <listener> <listener-class> com.sun.faces.config.ConfigureListener </listener-class> </listener> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.seam</url-pattern> </servlet-mapping> <session-config> <session-timeout>10</session-timeout> </session-config> <context-param> <param-name>javax.faces.CONFIG_FILES</param-name> <param-value>/WEB-INF/navigation.xml</param-value> </context-param> </web-app> <?xml version="1.0" encoding="UTF-8"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <!-- Facelets support --> <application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> </application> </faces-config>
The selectitems menu renders well but show me an error when i select an item:
Validation error: it doesn't right error
Please i need help!!, i have been a lot of time and i cant find the solution.