带转换器的对象上的selectonemenu jsf

带转换器的对象上的selectonemenu jsf,jsf,converter,selectonemenu,Jsf,Converter,Selectonemenu,这是我的选择菜单 <h:selectOneMenu value="#{bean.myObject}" > <f:ajax render="componentToRender" listener="#{bean.onSelect}"/> <f:converter converterId="myObjectConverter" /> <f:selectItem itemLabel="None" itemValue="#{null}"

这是我的选择菜单

<h:selectOneMenu value="#{bean.myObject}" >
    <f:ajax render="componentToRender" listener="#{bean.onSelect}"/>
    <f:converter converterId="myObjectConverter" />
    <f:selectItem itemLabel="None" itemValue="#{null}" />
    <f:selectItems value="#{bean.objects}" var="object" itemValue="#{object}" itemLabel="#{object.name}" />
</h:selectOneMenu>
我已经遇到了这样的问题,我将我选择的值从object更改为id。但在这里,我想让它与object一起工作,因为我知道这是可能的


谢谢

我有办法了。我必须重写MyObject类中的“equals”方法

谢谢

编辑:代码

@Override
public boolean equals(Object obj) {
    if(this.id == ((MyObject) obj).id) {
        return true;
    }else {
        return false;
    }
}

请添加
,并在
中包含其ID。您最终获得所需转换错误消息的可能性很大。或者,只需在服务器日志中查找排队但未显示的faces消息。或者甚至可能有一个具体的异常,它本身就应该是完整的答案,比如
NullPointerException
,它表示一个相当小的Java逻辑问题。我可以补充一点,当我在列表中选择“none”项时,它正在进入侦听器方法。是的,你是对的,我有一个验证错误(数值不正确)。这意味着这是我的转换器?我想这是一个非常简单的转换器。然后这个问题重复
public void onSelect() {
    System.out.println(this.myObject);
    if(this.myObject != null) {
        System.out.println(this.myObject.getName());
    }
}
@Override
public boolean equals(Object obj) {
    if(this.id == ((MyObject) obj).id) {
        return true;
    }else {
        return false;
    }
}