Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 2 primefaces selectOneMenu不';它应该工作的时候不工作_Jsf 2_Primefaces_Selectonemenu - Fatal编程技术网

Jsf 2 primefaces selectOneMenu不';它应该工作的时候不工作

Jsf 2 primefaces selectOneMenu不';它应该工作的时候不工作,jsf-2,primefaces,selectonemenu,Jsf 2,Primefaces,Selectonemenu,这个奇怪的问题让我损失了好几天,我仔细检查了所有东西,但我的selectOneMenu根本不起作用,我不明白为什么 以下是我的代码: 我的jsf <p:selectOneMenu id="entityType" value="#{entityBean.entity.type}" style="width:240px;" converter="entityTypeConverter" valueChangeListener="#{ent

这个奇怪的问题让我损失了好几天,我仔细检查了所有东西,但我的selectOneMenu根本不起作用,我不明白为什么

以下是我的代码:

我的jsf

<p:selectOneMenu id="entityType"  
      value="#{entityBean.entity.type}" 
      style="width:240px;" 
      converter="entityTypeConverter"
      valueChangeListener="#{entityBean.entityTypeListener}"
      required="true">
      <f:selectItems value="#{entityBean.typeList}"
              var="et"
              itemLabel="#{et.name}"
              itemValue="#{et}" />
</p:selectOneMenu>
它在我创建时按预期工作(它传递所选值),但当我尝试编辑实体时,所选类型实际上从未被选中。我尝试使用primefaces 3.1.1和3.2,但在查看/编辑模式下无法获取所选值

我做错了什么


提前谢谢

如果
EntityType
类的
equals()
方法丢失或损坏,则可能发生这种情况。鉴于在
EntityType
类中有一个
id
属性,该属性似乎能够足够唯一地标识实例,下面的最小实现应该可以为您做到这一点:

@Override
public boolean equals(Object other) {
    return (other instanceof EntityType) && (id != null)
        ? id.equals(((EntityType) other).id)
        : (other == this);
}

@Override
public int hashCode() {
    return (id != null)
        ? (this.getClass().hashCode() + id.hashCode())
        : super.hashCode();
}

hashCode()
是强制性的,因为
equals()

实体和entityType只是虚幻的名称使用
p:ajax
而不是valueChangeListener…没有valueChangeListener也会出现同样的问题。我的问题是在加载编辑页面时获取所选的值。我认为value=“#{entityBean.entity.type}”和转换器应该这样做,但显然这对我不起作用。谢谢你的回答,我的equals方法是missig!现在它工作得很好!
@Override
public boolean equals(Object other) {
    return (other instanceof EntityType) && (id != null)
        ? id.equals(((EntityType) other).id)
        : (other == this);
}

@Override
public int hashCode() {
    return (id != null)
        ? (this.getClass().hashCode() + id.hashCode())
        : super.hashCode();
}