2017-09-28 2 views
1

2つのselectOneMenuをネストしようとしています。その1つには州と2つ目の州が含まれていますが、州を選択すると間違いがあります。間違った!誰かが私にエラーを解読して手を差し伸べることができるなら、すでに非常に感謝しています!2つのselectOneMenuがネストされているエラー

エラー自体:

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) 

私は理解していない場合、メッセージは2州の値が、この場合には、選択した値を指し、「の.... 2を変換できません」と、それは州のオブジェクトに "変換"することはできませんか? ....これを解決する方法は?

<p:row> 
       <p:column> 
        <p:outputLabel value="Provincia " /> 
        <p:selectOneMenu id="cboProvincia" 
         value="#{cuentaBean.cuenta.provincia}" required="true" 
         requiredMessage="Debe seleccionar una provincia" 
         converter="omnifaces.SelectItemsConverter"> 
         <f:selectItem itemLabel="--Seleccione--" itemValue="#{null}" 
          noSelectionOption="true" /> 
         <f:selectItems value="#{cuentaBean.lstProvincias}" var="prov" 
          itemLabel="#{prov.nombre}" itemValue="#{prov.id}" /> 
         <f:ajax event="change" 
          listener="#{cuentaBean.listarLocalidades()}" 
          execute="cboProvincia" render="cboLocalidad" /> 
        </p:selectOneMenu> 
       </p:column> 

       <p:column> 
        <p:outputLabel value="Localidad " /> 
        <p:selectOneMenu id="cboLocalidad" 
         value="#{cuentaBean.cuenta.localidad}" required="true" 
         requiredMessage="Debe seleccionar una Localidad" 
         converter="omnifaces.SelectItemsConverter"> 
         <f:selectItem itemLabel="--Seleccione--" itemValue="#{null}" 
          noSelectionOption="true" /> 
         <f:selectItems value="#{cuentaBean.lstLocalidades}" var="loca" 
          itemLabel="#{loca.nombre}" itemValue="#{loca}" /> 
        </p:selectOneMenu> 
       </p:column> 
      </p:row> 

と、これはBeanです:

@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; 
} 
} 
:おそらく、エラーの原因になることができると、

@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<Cuenta> lstCuentas; 
private List<Provincia> lstProvincias; 
private List<Localidad> 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<>(); 
    lstProvincias = new ArrayList<>(); 
    lstLocalidades = new ArrayList<>(); 
    this.listarProvincias(); 
} 

public List<Cuenta> getLstCuentas() { 
    return lstCuentas; 
} 

public void setLstCuentas(List<Cuenta> lstCuentas) { 
    this.lstCuentas = lstCuentas; 
} 

public List<Provincia> getLstProvincias() { 
    return lstProvincias; 
} 

public void setLstProvincias(List<Provincia> lstProvincias) { 
    this.lstProvincias = lstProvincias; 
} 

public List<Localidad> getLstLocalidades() { 
    return lstLocalidades; 
} 

public void setLstLocalidades(List<Localidad> 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) { 

    } 
} 
} 

そして最後にモデルCUENTAエラーを生成ビューのコードの断片

+0

良いの例外は(https://www.google.com/search?q=javax.faces.component.UpdateModelException%3A+java.lang.IllegalArgumentException%3A+Cannot+convert+of+優れた[検索キーワード]です型+クラス+ java.lang.Integer + to +クラス&oq = javax.faces.component.UpdateModelException%3A + java.lang.IllegalArgumentException%3A + + +型+クラス+ java.lang.Integer +を+クラス) – BalusC

答えて

1

あなたはそれが間違ってあります

<f:selectItems value="#{cuentaBean.lstProvincias}" var="prov" 
         itemLabel="#{prov.nombre}" itemValue="#{prov.id}" /> 

それは次のようになります。

<f:selectItems value="#{cuentaBean.lstProvincias}" var="prov" 
         itemLabel="#{prov.nombre}" itemValue="#{prov}" /> 

説明:オブジェクトあるint型にprovinciaあるIDのprovinciaを設定しようとしています。

+0

ミルクメイドありがとう! –

関連する問題