gpt4 book ai didi

java - Primefaces 选择列表上的 JSF 2.0 "Conversion Error setting value ' courseID' for 'null Converter'

转载 作者:太空宇宙 更新时间:2023-11-04 06:53:52 25 4
gpt4 key购买 nike

当我想保存选项列表的数据时,出现以下错误

'Group [id=null, groupName=TEST, distinguishedName="distinguishedNameForGroup"' für 'null Converter'.

这是我使用的转换器@FacesConverter(value="groupConverter", forClass=Group.class)公共(public)类 GroupConverter 实现 Converter{

@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
if (value.trim().equals("")) {
return null;
}

Object ret = null;
if (component instanceof PickList) {

Object dualList = ((PickList) component).getValue();
DualListModel<?> dl = (DualListModel<?>) dualList;
for (Object o : dl.getSource()) {
String id = ((Group) o).getDistinguishedName();

if (value.equalsIgnoreCase(id)) {
ret = o;
break;
}
}

if (ret == null)
for (Object o : dl.getTarget()) {
String id = ((Group) o).getDistinguishedName();
if (value.equals(id)) {
ret = o;
break;
}
}
}
return ret;
}

@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
if (value == null || value.equals("")) {
return "";
} else {
String str = "";
if (value instanceof Group) {
str = ""
+ ((Group) value)
.getDistinguishedName();
}
return str;
}

}

}

以及 pickList 的代码:

<p:pickList
value="#{bean.groups}" var="group"
itemLabel="#{group.groupName}" itemValue="#{group}"
converter="groupConverter">
</p:pickList>

我不明白这个错误,因为在网络中我发现转换器没有被调用,但肯定是。我已经没有主意了。没有空值或任何东西。 Group.class 有 equal 和 hashcode 方法。

更新:我发现 selectOneMenu 出错了。这是它的代码。没有转换器,这可能是问题所在。测试一下。

<p:selectOneMenu id="abteilungsleiterrolle"
value="#{bean.object.group}">
<f:selectItems value="#{bean.source}" var="q"
itemValue="#{q}" itemLabel="#{q.groupName}"/>
</p:selectOneMenu>

最佳答案

试试这个

 @ViewScope   
@FacesConverter(value="pickListConverter")
public class PickListConverter implements Converter{
Map<String, Object> tmp;
@PostConstruct
public void init() {
tmp = new HashMap<String, Object>();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return tmp.get(value);
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value == null || value.equals("")) {
return "";
} else {
tmp.put(value.toString(), value);
return value.toString();
}
}
}

此转换器仅确保您的 toString() (NameClass 和字段和 id),例如 "Group[id="+ id +"]" 格式正确,但此转换器适用于任何

并记住更改转换器名称:

<p:pickList
value="#{bean.groups}" var="group"
itemLabel="#{group.groupName}" itemValue="#{group}"
converter="pickListConverter">

关于java - Primefaces 选择列表上的 JSF 2.0 "Conversion Error setting value ' courseID' for 'null Converter',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23007635/

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