title: Error with two selectOneMenu nested
body: <p>I am trying to make two selectOneMenu nested, one contains the provinces and the second the cities of those provinces, but I haves a mistake, when I select the province, and I can not find out what I did wrong !. If anyone can give me a hand with deciphering the error, already very grateful!</p>
  
  <p>The error itself:</p>
  
  <pre><code>SEVERE [javax.enterprise.resource.webcontainer.jsf.context] (default 
  task-22) javax.faces.component.UpdateModelException: 
  java.lang.IllegalArgumentException:
  Cannot convert 2 of type class java.lang.Integer to class 
  ar.com.kompass.model.Provincia
  at javax.faces.component.UIInput.updateModel(UIInput.java:866)
  at javax.faces.component.UIInput.processUpdates(UIInput.java:749)
  at com.sun.faces.context.PartialViewContextImpl$Phase
  AwareVisitCallback.visit(PartialViewContextImpl.java:577)
  at com.sun.faces.component.visit.PartialVisitContext.invoke
  VisitCallback(PartialVisitContext.java:183)
  at javax.faces.component.UIComponent.visitTree(UIComponent.java:1689)
  at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
  at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
  at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
  at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
  </code></pre>
  
  <p>If I do not understand, the message "Can not convert 2 of ...." refers to the value selected, in this case the value of 2 provinces, and that does not manage to "convert" to a province object? .... how to solve this? The piece of view code that generates the error:</p>
  
  <pre><code>&lt;p:row&gt;
                  &lt;p:column&gt;
                      &lt;p:outputLabel value="Provincia " /&gt;
                      &lt;p:selectOneMenu id="cboProvincia"
                          value="#{cuentaBean.cuenta.provincia}" required="true"
                          requiredMessage="Debe seleccionar una provincia"
                          converter="omnifaces.SelectItemsConverter"&gt;
                          &lt;f:selectItem itemLabel="--Seleccione--" itemValue="#{null}"
                              noSelectionOption="true" /&gt;
                          &lt;f:selectItems value="#{cuentaBean.lstProvincias}" var="prov"
                              itemLabel="#{prov.nombre}" itemValue="#{prov.id}" /&gt;
                          &lt;f:ajax event="change"
                              listener="#{cuentaBean.listarLocalidades()}"
                              execute="cboProvincia" render="cboLocalidad" /&gt;
                      &lt;/p:selectOneMenu&gt;
                  &lt;/p:column&gt;
  
                  &lt;p:column&gt;
                      &lt;p:outputLabel value="Localidad " /&gt;
                      &lt;p:selectOneMenu id="cboLocalidad"
                          value="#{cuentaBean.cuenta.localidad}" required="true"
                          requiredMessage="Debe seleccionar una Localidad"
                          converter="omnifaces.SelectItemsConverter"&gt;
                          &lt;f:selectItem itemLabel="--Seleccione--" itemValue="#{null}"
                              noSelectionOption="true" /&gt;
                          &lt;f:selectItems value="#{cuentaBean.lstLocalidades}" var="loca"
                              itemLabel="#{loca.nombre}" itemValue="#{loca}" /&gt;
                      &lt;/p:selectOneMenu&gt;
                  &lt;/p:column&gt;
              &lt;/p:row&gt;
  </code></pre>
  
  <p>and this is the bean:</p>
  
  <pre><code>@Named
  @ViewScoped public class CuentaBean implements Serializable {
  
  @Inject
  private ICuentaService cuentaService;
  
  @Inject
  private Cuenta cuenta;
  @Inject
  private IProvinciaService provinciaService;
  @Inject
  private ILocalidadService localidadService;
  
  private List&lt;Cuenta&gt; lstCuentas;
  private List&lt;Provincia&gt; lstProvincias;
  private List&lt;Localidad&gt; lstLocalidades;
  private int codigoProvincia;
  
  public int getCodigoProvincia() {
      return codigoProvincia;
  }
  
  public void setCodigoProvincia(int codigoProvincia) {
      this.codigoProvincia = codigoProvincia;
  }
  
  public Cuenta getCuenta() {
      return cuenta;
  }
  
  public void setCuenta(Cuenta cuenta) {
      this.cuenta = cuenta;
  }
  
  @PostConstruct
  public void init(){     
     lstCuentas = new ArrayList&lt;&gt;();
     lstProvincias = new ArrayList&lt;&gt;();
     lstLocalidades = new ArrayList&lt;&gt;();
     this.listarProvincias();
  }
  
  public List&lt;Cuenta&gt; getLstCuentas() {
     return lstCuentas;
  }
  
  public void setLstCuentas(List&lt;Cuenta&gt; lstCuentas) {
     this.lstCuentas = lstCuentas;
  }
  
  public List&lt;Provincia&gt; getLstProvincias() {
     return lstProvincias;
  }
  
  public void setLstProvincias(List&lt;Provincia&gt; lstProvincias) {
     this.lstProvincias = lstProvincias;
  }
  
  public List&lt;Localidad&gt; getLstLocalidades() {
     return lstLocalidades;
  }
  
  public void setLstLocalidades(List&lt;Localidad&gt; lstLocalidades) {
     this.lstLocalidades = lstLocalidades;
  }
  
  public void listarProvincias() {
      try {
        //lstCuentas = cuentaService.listar();
        lstProvincias= provinciaService.listar();
        //lstLocalidades= localidadService.listar(idProv);      
      } catch (Exception e) {
  
      }
   } 
  
   public void listarLocalidades
      System.out.print(this.codigoProvincia);
      lstLocalidades= localidadService.listar(this.codigoProvincia);          
  } catch (Exception e) {
  
    }
   }
  }
  </code></pre>
  
  <p>And finally the Model Cuenta, that perhaps could be the reason for the error:</p>
  
  <pre><code>@Entity @Table(name = "cuenta") public class Cuenta  implements Serializable {
  
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private int id;
  @Column(name = "nombre", length = 30, nullable = false)
  private String nombre;
  @Column(name = "domicilio", length = 30, nullable = false)
  private String domicilio;
  private short altura;
  
  @OneToOne
  @JoinColumn(name="idprov" , nullable = false)
  private Provincia provincia;
  
  @OneToOne
  @JoinColumn(name="idloca" , nullable = false)
  private Localidad localidad;
  
  public int getId() {
     return id;
  }
  public void setId(int id) {
      this.id = id;
  }
  public String getNombre() {
     return nombre;
  }
  public void setNombre(String nombre) {
      this.nombre = nombre;
  }
  public String getDomicilio() {
      return domicilio;
  }
  public void setDomicilio(String domicilio) {
      this.domicilio = domicilio;
  }
  public short getAltura() {
      return altura;
  }
  public void setAltura(short altura) {
     this.altura = altura;
  }
  
  public Localidad getLocalidad() {
     return localidad;
  }
  public void setLocalidad(Localidad localidad) {
     this.localidad = localidad;
  }
  
  public Provincia getProvincia() {
     return provincia;
  }
  public void setProvincia(Provincia provincia) {
     this.provincia = provincia;
  }
  
  @Override
  public int hashCode() {
     final int prime = 31;
     int result = 1;
     result = prime * result + id;
     return result;
  }
  @Override
  public boolean equals(Object obj) {
     if (this == obj)
         return true;
     if (obj == null)
         return false;
     if (getClass() != obj.getClass())
         return false;
     Cuenta other = (Cuenta) obj;
     if (id != other.id)
         return false;
     return true;
   }
  }
  </code></pre>