13 Replies Latest reply on May 28, 2009 3:07 AM by moiselo

    Problem with Picklist

    s4mu3l.a.r

      I'm having problems using RichFaces' picklist component. I get some values from the database and want to initialize the picklist with them. The problem is that I don't know how to initialize the right side of the picklist.

      To be more precise, I have some profiles associated with a user, and wish to show the profiles already owned by the user on the right side of the picklist, with the other available profiles on the left side.

      Is there any way to initialize the right side of a picklist when the component is rendered?

        • 1. Re: Problem with Picklist
          nbelaevski

          Hello,

          Use value attribute to set items of the right side.

          • 2. Re: Problem with Picklist
            s4mu3l.a.r

            I tried
            D'ont work


            <rich:pickList value="#{Bean.profilesT}">
            <f:selectItems value="#{Bean.profiles}"/>
            </rich:pickList>

            value selected - Bean.profilesT
            value default - Bean.profiles


            help

            • 3. Re: Problem with Picklist
              s4mu3l.a.r

              help-me!!!

              • 4. Re: Problem with Picklist
                abelevich

                Hello,
                Could yout attach your java bean code?

                • 5. Re: Problem with Picklist


                  I have the same problem. I post the list for me but SelectItem with the following error: "Value is not String (class = javax.faces.model.SelectItem)
                  Can anyone help me?

                  Greetings and thanks

                  • 6. Re: Problem with Picklist
                    ilya_shaikovsky

                     

                    "abelevich" wrote:
                    Hello,
                    Could yout attach your java bean code?


                    • 7. Re: Problem with Picklist

                      This is the pickList definition:
                      <rich:pickList id="listPer" showButtonsLabel="false" value="#{listaParquesAsignadosBean.parqueSel.listaPersonalAsignados}"> <f:selectItems value="#{listaParquesAsignadosBean.parqueSel.listaPersonalDisponibles}"/>
                      </rich:pickList>

                      And this is my java bean code:
                      public class ListaParquesAsignadosBean {

                      @Resource
                      AdmParqueBomberoService parqueService;
                      @Resource
                      EmerParqueAsignadoService parqueAsigService;

                      EmerParqueBomberoBean parqueSel = new EmerParqueBomberoBean();
                      List listaAsignados = new ArrayList();

                      private Long parqueSid;
                      private Long emergenciaSid;

                      public EmerParqueBomberoBean getParqueSel() {
                      return parqueSel;
                      }

                      public void setParqueSel(EmerParqueBomberoBean parqueSel) {
                      this.parqueSel = parqueSel;
                      }

                      public List getListaAsignados() {
                      return listaAsignados;
                      }

                      public void setListaAsignados(List listaAsignados) {
                      this.listaAsignados = listaAsignados;
                      }

                      public Long getParqueSid() {
                      return parqueSid;
                      }

                      public void setParqueSid(Long parqueSid) {
                      this.parqueSid = parqueSid;
                      }

                      public Long getEmergenciaSid() {
                      return emergenciaSid;
                      }

                      public void setEmergenciaSid(Long emergenciaSid) {
                      this.emergenciaSid = emergenciaSid;
                      }



                      public void calculaParquesAsignados (EmerEmergenciaPropsBean emergencia) throws Exception
                      {
                      setListaAsignados(parqueAsigService.calculaParquesAsignados(emergencia));
                      }

                      public void eliminarParqueAsignado()
                      {
                      List listaTmp = getListaAsignados();
                      EmerParqueBomberoBean parqueBorrar = new EmerParqueBomberoBean();
                      for (EmerParqueBomberoBean parque:listaTmp)
                      {
                      if (parque.getSid().equals(getParqueSid()))
                      parqueBorrar = parque;
                      }
                      listaTmp.remove(parqueBorrar);
                      setListaAsignados(listaTmp);
                      }

                      public void muestraRecursosParque() throws Exception
                      {
                      List listaTmp = getListaAsignados();
                      for (EmerParqueBomberoBean parque:listaTmp)
                      {
                      if (parque.getParqueSid().equals(getParqueSid()))
                      setParqueSel(parque);
                      }
                      setParqueSel(parqueAsigService.cargaDatosParqueSeleccionRecursos(getParqueSel(), getEmergenciaSid()));
                      }


                      public void guardarRecursosParque(ActionEvent event) throws Exception
                      {
                      try
                      {
                      List listaTmp = getListaAsignados();
                      EmerParqueBomberoBean parqueAct = new EmerParqueBomberoBean();
                      for (EmerParqueBomberoBean parque:listaTmp)
                      {
                      if (parque.getParqueSid().equals(parqueSel.getParqueSid()))
                      parqueAct = parque;
                      }
                      int i = listaTmp.indexOf(parqueAct);
                      setParqueSel(parqueAsigService.guardarRecursosParque(parqueSel, emergenciaSid));
                      listaTmp.set(i, parqueSel);
                      setListaAsignados(listaTmp);
                      }catch (Exception e) {
                      String mensaje="Se ha producido un fallo al guardar los recursos: " + e.getMessage();
                      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,mensaje,mensaje);
                      FacesContext.getCurrentInstance().addMessage("modAsignarRecursos" + ":desc",message);
                      }
                      }


                      public void anadirParque (Long parqueSid)
                      {
                      try {
                      AdmParqueBombero parqueEnt = parqueService.findPropertiesEmerBySid(parqueSid);
                      if (parqueEnt != null)
                      {
                      List lista = getListaAsignados();
                      Boolean bEnc = false;
                      int i = 0;
                      while (!bEnc && i<lista.size())
                      {
                      if (lista.get(i).getSid().equals(parqueEnt.getSid()))
                      bEnc = true;
                      i++;
                      }
                      if (!bEnc)
                      {
                      setParqueSel(parqueAsigService.cargaBeanEmerParqueBombero(parqueEnt, true, getEmergenciaSid()));
                      lista.add(getParqueSel());
                      setListaAsignados(lista);
                      }
                      else
                      {
                      String mensaje="El parque de bomberos seleccionado ya existe en la lista mostrada.";
                      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,mensaje,mensaje);
                      FacesContext.getCurrentInstance().addMessage("modAsignarRecursos" + ":desc",message);
                      }
                      }
                      else
                      {
                      String mensaje="El parque de bomberos seleccionado no se ha podido añadir.";
                      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,mensaje,mensaje);
                      FacesContext.getCurrentInstance().addMessage("busquedaUsuario" + ":desc",message);
                      }
                      } catch (Exception e) {
                      e.printStackTrace();
                      }
                      }

                      public String compruebaDisponiblesVSAsignados()
                      {
                      String mensaje = "";
                      int i = 0;
                      while (i<getListaAsignados().size())
                      {
                      EmerParqueBomberoBean parqueBean = getListaAsignados().get(i);
                      parqueBean = parqueAsigService.recalculaRecursosParqueBean(parqueBean);
                      //Comprobamos los nuevos disponibles con los asignados.
                      if (!parqueBean.comparaDisponiblesAsignado())
                      {
                      mensaje = "Alguno de los recursos asignados del parque de bomberos " + parqueBean.getNombre() + " ya no está disponible. Realice de nuevo la assignación de recursos.";
                      i = getListaAsignados().size();
                      }
                      i++;
                      }

                      return mensaje;
                      }

                      }

                      • 8. Re: Problem with Picklist
                        ilya_shaikovsky

                        pickList is uses SelectItem's as standard JSF selectMany components.. so if you using some other objects you should define converter properly.

                        • 9. Re: Problem with Picklist

                          But the lists are of type SelectItem...

                          public class EmerParqueBomberoBean implements Comparable{

                          @Resource
                          EmerParqueAsignadoService parqueAsigService;

                          private Long sid;
                          private Long parqueSid;
                          private String nombre;
                          private String telefonoParque;
                          private String telefonoGuardia;
                          private Integer distanciaAlSiniestro;
                          private String estadoAsignacion; //Indica si el parque posee recursos disponibles o no. Falta los no disponibles pero en emergencia de menor grado.

                          private List listaPersonalDisponibles = new ArrayList();
                          private List listaPersonalAsignados= new ArrayList();
                          private List listaVehiculosDiponibles= new ArrayList();
                          private List listaVehiculosAsignados= new ArrayList();

                          • 10. Re: Problem with Picklist
                            ilya_shaikovsky

                            should be

                            ...
                            private List<SelectItem> listaPersonalAsignados= new ArrayList<SelectItem>();
                            ...


                            • 11. Re: Problem with Picklist


                              No, this is not the problem. Could have something to do with the return value from the picklist is an array of String, not SelectItems?

                              I'm using version 3.3.0, I will try with 3.3.1

                              Thanks

                              • 12. Re: Problem with Picklist
                                ilya_shaikovsky

                                sorry but yes.. target list a list of strings. check http://livedemo.exadel.com/richfaces-demo/richfaces/pickList.jsf.. second sample seems your one.. page code here and to get a full code - checkout project from svn.

                                • 13. Re: Problem with Picklist

                                  Thanks, the problem is solved.