Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf '的转换错误设置值;空转换器';_Jsf_Primefaces_Converter_Selectonemenu - Fatal编程技术网

Jsf '的转换错误设置值;空转换器';

Jsf '的转换错误设置值;空转换器';,jsf,primefaces,converter,selectonemenu,Jsf,Primefaces,Converter,Selectonemenu,我收到这个转换错误消息。我想从selectOneMenu列表中找到一位客户,然后给他加一笔奖金。 我实现了转换器和equals/hashcode方法。 你能看出什么不对劲吗 我的XHTML: <h:body> <h:form> <p:panel id="panel" header="Cadastro de bônus"> <p:panelGrid columns="2

我收到这个转换错误消息。我想从selectOneMenu列表中找到一位客户,然后给他加一笔奖金。 我实现了转换器和equals/hashcode方法。 你能看出什么不对劲吗

我的XHTML:

        <h:body>
        <h:form>
            <p:panel id="panel" header="Cadastro de bônus">
                <p:panelGrid columns="2">
                    <p:outputLabel value="Cliente: " />
                    <p:selectOneMenu value="#{clienteBean.cliente}">
                    <f:selectItem itemLabel="--Selecione um cliente--" />
                        <f:selectItems value="#{clienteBean.selectClientes}" />
                    </p:selectOneMenu>

                    <p:outputLabel value="Informe o valor da venda:" for="valor_venda" />
                    <p:inputText id="valor_venda"
                        value="#{bonusBean.bonus.valor_venda}" />

                    <h:commandButton value="Próximo" action="#{bonusBean.gravar}" />
                </p:panelGrid>
            </p:panel>
        </h:form>
    </h:body>
</ui:define>
}

我的托管Bean:

    @ManagedBean
    public class ClienteBean {

private Cliente cliente;
List<Cliente> clientes;
List<SelectItem> selectClientes;
DAOCliente dao = new DAOCliente();

public List<SelectItem> getSelectClientes() throws Exception {
    if(selectClientes==null){
        selectClientes = new ArrayList<SelectItem>();
        clientes = dao.listarTodosClientes();
        if(clientes!=null && !clientes.isEmpty()){
            SelectItem item;
            for(Cliente lista : clientes){
                item = new SelectItem(lista, lista.getNome());
                selectClientes.add(item);
            }
        }
    }
    return selectClientes;
}

public List<Cliente> getClientes() throws Exception{

    if(clientes == null){
        clientes = dao.listarTodosClientes();
    }
    return clientes;
}

public Cliente getCliente() {
    return cliente;
}

public void gravar() {
    dao.adiciona(cliente);
    this.cliente = new Cliente();
}

public void excluir(Cliente cliente) throws Exception{
    dao.excluir(cliente);
}

public void setClientes(List<Cliente> clientes) {
    this.clientes = clientes;
}
@ManagedBean
公共类客户bean{
私人客户;
列出客户名单;
列出选定的客户;
daoclientedao=新的DAOCliente();
公共列表getSelectClientes()引发异常{
if(selectClientes==null){
selectClientes=newarraylist();
clients=dao.listartodoclients();
if(clientes!=null&&!clientes.isEmpty()){
选择项目;
针对(客户列表A:客户){
item=newselectitem(lista,lista.getNome());
选择客户。添加(项目);
}
}
}
返回选定的客户;
}
public List getClientes()引发异常{
如果(客户==null){
clients=dao.listartodoclients();
}
回头客;
}
公共客户getCliente(){
回头客;
}
公墓{
dao.adiciona(客户);
this.cliente=新客户();
}
public void excluir(Cliente Cliente)引发异常{
dao.excluir(客户);
}
公共无效设置客户(列出客户){
this.clientes=客户;
}
}

我的客户类别:

    public class Cliente {

@Id @GeneratedValue
private Long id;

private String nome;
private String fone_residencia;
private String fone_celular;
private String perfil_facebook;

@OneToMany(mappedBy = "cliente", fetch = FetchType.EAGER, targetEntity = Bonus.class, cascade = CascadeType.ALL)
private List<Bonus> bonus;

public List<Bonus> getBonus() {
    return bonus;
}
public void setBonus(List<Bonus> bonus) {
    this.bonus = bonus;
}

public String getPerfil_facebook() {
    return perfil_facebook;
}
public void setPerfil_facebook(String perfil_facebook) {
    this.perfil_facebook = perfil_facebook;
}
public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
public String getFone_residencia() {
    return fone_residencia;
}
public void setFone_residencia(String fone_residencia) {
    this.fone_residencia = fone_residencia;
}
public String getFone_celular() {
    return fone_celular;
}
public void setFone_celular(String fone_celular) {
    this.fone_celular = fone_celular;
}
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((bonus == null) ? 0 : bonus.hashCode());
    result = prime * result
            + ((fone_celular == null) ? 0 : fone_celular.hashCode());
    result = prime * result
            + ((fone_residencia == null) ? 0 : fone_residencia.hashCode());
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    result = prime * result + ((nome == null) ? 0 : nome.hashCode());
    result = prime * result
            + ((perfil_facebook == null) ? 0 : perfil_facebook.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Cliente other = (Cliente) obj;
    if (bonus == null) {
        if (other.bonus != null)
            return false;
    } else if (!bonus.equals(other.bonus))
        return false;
    if (fone_celular == null) {
        if (other.fone_celular != null)
            return false;
    } else if (!fone_celular.equals(other.fone_celular))
        return false;
    if (fone_residencia == null) {
        if (other.fone_residencia != null)
            return false;
    } else if (!fone_residencia.equals(other.fone_residencia))
        return false;
    if (id == null) {
        if (other.id != null)
            return false;
    } else if (!id.equals(other.id))
        return false;
    if (nome == null) {
        if (other.nome != null)
            return false;
    } else if (!nome.equals(other.nome))
        return false;
    if (perfil_facebook == null) {
        if (other.perfil_facebook != null)
            return false;
    } else if (!perfil_facebook.equals(other.perfil_facebook))
        return false;
    return true;
}
@Override
public String toString() {
    return "Cliente [id=" + id + ", nome=" + nome + ", fone_residencia="
            + fone_residencia + ", fone_celular=" + fone_celular
            + ", perfil_facebook=" + perfil_facebook + ", bonus=" + bonus
            + "]";
}
公共类客户{
@Id@GeneratedValue
私人长id;
私有字符串名称;
私人弦乐坊公寓;
私人弦乐;
私有字符串perfil_facebook;
@OneToMany(mappedBy=“cliente”,fetch=FetchType.EAGER,targetEntity=Bonus.class,cascade=CascadeType.ALL)
私人名单奖金;
公共列表getBonus(){
回报奖金;
}
公共无效挫折(列表奖金){
这个。奖金=奖金;
}
公共字符串getPerfil_facebook(){
返回perfil_facebook;
}
public void setPerfil_facebook(字符串perfil_facebook){
this.perfil_facebook=perfil_facebook;
}
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getNome(){
返回nome;
}
公共无效集合名称(字符串名称){
this.nome=nome;
}
公共字符串getFone_Residentia(){
返回fone_公寓;
}
公共无效住宅(字符串住宅){
this.fone_Residentia=fone_Residentia;
}
公共字符串getFone_celular(){
返回教堂;
}
公共无效集合(字符串集合){
this.fone_celular=fone_celular;
}
@凌驾
公共int hashCode(){
最终整数素数=31;
int结果=1;
result=prime*result+((bonus==null)?0:bonus.hashCode();
结果=素数*结果
+((fone_celular==null)?0:fone_celular.hashCode();
结果=素数*结果
+((fone_Residentia==null)?0:fone_Residentia.hashCode();
result=prime*result+((id==null)?0:id.hashCode();
result=prime*result+((nome==null)?0:nome.hashCode();
结果=素数*结果
+((perfil_facebook==null)?0:perfil_facebook.hashCode();
返回结果;
}
@凌驾
公共布尔等于(对象obj){
if(this==obj)
返回true;
if(obj==null)
返回false;
如果(getClass()!=obj.getClass())
返回false;
客户其他=(客户)obj;
如果(奖金==null){
if(other.bonus!=null)
返回false;
}如果(!bonus.equals(other.bonus))
返回false;
if(fone_celular==null){
if(other.fone_celular!=null)
返回false;
}else如果(!fone_celular.equals(other.fone_celular))
返回false;
如果(fone_Residentia==null){
如果(other.fone_residesia!=null)
返回false;
}如果(!fone_Residentia.等于(其他fone_Residentia))
返回false;
if(id==null){
if(other.id!=null)
返回false;
}如果(!id.equals(other.id))
返回false;
if(nome==null){
if(other.nome!=null)
返回false;
}else如果(!nome.equals(other.nome))
返回false;
如果(perfil_==null){
if(other.perfil_facebook!=null)
返回false;
}如果(!perfil_facebook.equals(other.perfil_facebook))
返回false;
返回true;
}
@凌驾
公共字符串toString(){
return“Cliente[id=“+id+”,nome=“+nome+”,fone_Residentia=”
+fone_Residentia+”,fone_celular=“+fone_celular
+,perfil_facebook=“+perfil_facebook+”,bonus=“+bonus
+ "]";
}

}

您应该在相关标记中提及使用的转换器类,以启用转换:

<p:selectOneMenu value="#{clienteBean.cliente}" converter="converterCliente">
    ...                
</p:selectOneMenu>

...                

但我已经这样做了:@facescoverter(forClass=ClienteBean.class),该注释意味着该类被视为JSF转换器。您还必须通过需要它的标记来指示在视图中使用它的位置。我已将ManagedBean上的注释更改为:@FacesConverter(“ConverterClient”),并在SelectOne菜单中添加了converter=“ConverterClient”,但现在我收到了此错误:“验证错误:值无效”。托管bean
ClienteBean
与转换过程无关,只需将转换器类
ConverterClient
上的注释更改为
@FacesConverter(“ConverterClient”)
。是的。就这么做了。同样的错误。
    public class Cliente {

@Id @GeneratedValue
private Long id;

private String nome;
private String fone_residencia;
private String fone_celular;
private String perfil_facebook;

@OneToMany(mappedBy = "cliente", fetch = FetchType.EAGER, targetEntity = Bonus.class, cascade = CascadeType.ALL)
private List<Bonus> bonus;

public List<Bonus> getBonus() {
    return bonus;
}
public void setBonus(List<Bonus> bonus) {
    this.bonus = bonus;
}

public String getPerfil_facebook() {
    return perfil_facebook;
}
public void setPerfil_facebook(String perfil_facebook) {
    this.perfil_facebook = perfil_facebook;
}
public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
public String getFone_residencia() {
    return fone_residencia;
}
public void setFone_residencia(String fone_residencia) {
    this.fone_residencia = fone_residencia;
}
public String getFone_celular() {
    return fone_celular;
}
public void setFone_celular(String fone_celular) {
    this.fone_celular = fone_celular;
}
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((bonus == null) ? 0 : bonus.hashCode());
    result = prime * result
            + ((fone_celular == null) ? 0 : fone_celular.hashCode());
    result = prime * result
            + ((fone_residencia == null) ? 0 : fone_residencia.hashCode());
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    result = prime * result + ((nome == null) ? 0 : nome.hashCode());
    result = prime * result
            + ((perfil_facebook == null) ? 0 : perfil_facebook.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Cliente other = (Cliente) obj;
    if (bonus == null) {
        if (other.bonus != null)
            return false;
    } else if (!bonus.equals(other.bonus))
        return false;
    if (fone_celular == null) {
        if (other.fone_celular != null)
            return false;
    } else if (!fone_celular.equals(other.fone_celular))
        return false;
    if (fone_residencia == null) {
        if (other.fone_residencia != null)
            return false;
    } else if (!fone_residencia.equals(other.fone_residencia))
        return false;
    if (id == null) {
        if (other.id != null)
            return false;
    } else if (!id.equals(other.id))
        return false;
    if (nome == null) {
        if (other.nome != null)
            return false;
    } else if (!nome.equals(other.nome))
        return false;
    if (perfil_facebook == null) {
        if (other.perfil_facebook != null)
            return false;
    } else if (!perfil_facebook.equals(other.perfil_facebook))
        return false;
    return true;
}
@Override
public String toString() {
    return "Cliente [id=" + id + ", nome=" + nome + ", fone_residencia="
            + fone_residencia + ", fone_celular=" + fone_celular
            + ", perfil_facebook=" + perfil_facebook + ", bonus=" + bonus
            + "]";
}
<p:selectOneMenu value="#{clienteBean.cliente}" converter="converterCliente">
    ...                
</p:selectOneMenu>