gpt4 book ai didi

jsf-2 - primefaces selectOneMenu 在应该时不起作用

转载 作者:行者123 更新时间:2023-12-01 08:35:52 25 4
gpt4 key购买 nike

我被这个奇怪的问题浪费了好几天,我仔细检查了所有内容,但我的 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>

我的转换器:

    @FacesConverter("entityTypeConverter")
public class EntityTypeConverter implements Converter {
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
Long id = Long.parseLong(value);

return EntityType.findEntityType(id);
}

public String getAsString(FacesContext context, UIComponent component, Object value) {

return value instanceof EntityType ? ((EntityType) value).getId().toString() : "";
}
}

它在我创建时按预期工作(它传递了选定的值),但是当我尝试编辑实体时,实际上从未选择过选定的类型。我尝试使用 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() contract 是强制性的.

关于jsf-2 - primefaces selectOneMenu 在应该时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com