4 Replies Latest reply on Oct 13, 2007 6:40 PM by Juan Manuel Pache Marconell

    Converters, SelectItems

    Juan Manuel Pache Marconell Newbie

      Hello, 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.