Problem with listshuttle
bryan_1983 Jul 15, 2009 8:10 PMHello!!!
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="Ú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.
