loo*_*brs 3 selectonemenu primefaces jsf-2
我在这个奇怪的问题上失去了几天,我仔细检查了一切,但我的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>
Run Code Online (Sandbox Code Playgroud)
我的转换器:
@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() : "";
}
}
Run Code Online (Sandbox Code Playgroud)
它在我创建时按预期工作(它传递所选值),但是当我尝试编辑实体时,实际上从未选择所选类型.我尝试使用primefaces 3.1.1和3.2但在查看/编辑模式下我无法获得所选值.
我究竟做错了什么?
提前致谢!
Bal*_*usC 10
如果equals()您的EntityType类的方法丢失或损坏,就会发生这种情况.鉴于id您的EntityType类中有一个属性似乎足够唯一地标识实例,以下最小实现应该为您执行:
@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();
}
Run Code Online (Sandbox Code Playgroud)
hashCode()根据equals() 合同,这是强制性的.
| 归档时间: |
|
| 查看次数: |
11254 次 |
| 最近记录: |