带转换器的对象上的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;
}
}