0 Replies Latest reply on Jul 15, 2009 8:10 PM by bryan_1983

    Problem with listshuttle

      Hello!!!
      I put again the one post because the last post is bad formated.


      I want to use a listshuttle to display information about users. All works fine, but when I select a user the property targetValue doesn't return the list of values.


      This is the code of my listshuttle:






      <rich:listShuttle sourceValue="#{obtenerContactos.source}"
                     id="listShuttleContactos" var="usuario"
                     sourceCaptionLabel="Contactos Disponibles:"
                     targetCaptionLabel="Contactos Seleccionados:"
                     targetValue="#{obtenerContactos.target}" showButtonLabels="false"
                     fastOrderControlsVisible="false" orderControlsVisible="false"
                     topControlLabel="Primero" copyAllControlLabel="Copiar Todos"
                     copyControlLabel="Copiar" downControlLabel="Bajar"
                     upControlLabel="Subir" removeAllControlLabel="Eliminar Todos"
                     removeControlLabel="Eliminar" bottomControlLabel="&#218;ltimo"
                     converter="contacto_converter">







      this is my java class:






      @Name("obtenerContactos")
      @Scope(ScopeType.SESSION)
      public class obtenerContactosLibretaDirecciones  {
      
           
           @In
           EntityManager entityManager;
           @In
           Nmusuario user;
           private String filtro;
           Nmcontacto nmcontacto;
           Nmusuario nmusuario;
      
           private List<Nmcontacto> source;
           private List<Nmcontacto> target;
      
           @Create
           public void constructor() {
                try {
                     nmusuario = entityManager.find(Nmusuario.class, user.getIdContacto());
                     source = (nmusuario.getNmcontactos() == null) ? new ArrayList<Nmcontacto>(): new ArrayList<Nmcontacto>(nmusuario.getNmcontactos());
                     target = new ArrayList<Nmcontacto>();               
                               
                } catch (Exception e) {
                     // TODO: handle exception
                }
                
           }
      
           public List<Nmcontacto> getSource() {
                return source;
           }
      
           public void setSource(List<Nmcontacto> source) {
                this.source = source;
           }
      
           public List<Nmcontacto> getTarget() {
                return target;
           }
      
           public void setTarget(List<Nmcontacto> target) {
                this.target = target;
           }
      
           public String getFiltro() {
                return filtro;
           }
      
           public void setFiltro(String filtro) {
                this.filtro = filtro;
           }
           
           public void cadenaContactos(){
                /*List<String> cadena = new ArrayList<String>();
                
                for (int i = 0; i < target.size(); i++) {
                     cadena.add(target.get(i).getNombre().toString());
                }
                System.out.println(cadena);*/
                
                 System.out.println("target:"+this.target);
           }
      }







      and this is my converter class:






      @Name("contacto_converter")
      @Converter(forClass=Nmcontacto.class)
      public class contactoConverter implements javax.faces.convert.Converter{
      
           @In EntityManager entityManager;
           @In FacesMessages facesMessages;
           
           public Object getAsObject(FacesContext context, UIComponent component, String value)throws ConverterException {
                
                try {
                     Nmcontacto contacto=(Nmcontacto)entityManager.createQuery("from Nmcontacto m where m.nombre = :valor")
                     .setParameter("valor", value) .getSingleResult();
                     return contacto;
                } catch (Exception e) {
                     facesMessages.add(e.getMessage());
                     return null;
                }
                
           }
      
           public String getAsString(FacesContext context, UIComponent component, Object object)throws ConverterException {
                
                try {
                     if (!(object instanceof Nmcontacto))
                          throw new ConverterException();
                     String res=((Nmcontacto)object).getNombre();
                     return res;
                } catch (Exception e) {
                     facesMessages.add(e.getMessage());
                     return null;
                }
           }
      }







      I would thank that anybody explain me how resolve my problem.


      Regards.