Jsf 无法使用selectManyCheckbox在对象的arrayList中添加对象

Jsf 无法使用selectManyCheckbox在对象的arrayList中添加对象,jsf,primefaces,Jsf,Primefaces,我想将对象列表中的一个或多个对象添加到另一个空列表中。我确信第一个列表已经初始化,因为我可以在p:selectManyCheckbox中打印它 我认为它不会将对象Comite复制到列表中,而是在我得到错误时将字符串复制到列表中:java.lang.ClassCastException:java.lang.string不能转换为com.primastis.jsf.model.Comite 因此,如何将其复制到列表中 公共类委员会{ 私人国际委员会; 私人内测分光计; 私人字符串委员会; 公共委员

我想将对象列表中的一个或多个对象添加到另一个空列表中。我确信第一个列表已经初始化,因为我可以在p:selectManyCheckbox中打印它

我认为它不会将对象Comite复制到列表中,而是在我得到错误时将字符串复制到列表中:java.lang.ClassCastException:java.lang.string不能转换为com.primastis.jsf.model.Comite

因此,如何将其复制到列表中

公共类委员会{
私人国际委员会;
私人内测分光计;
私人字符串委员会;
公共委员会(int idComite、int IDPARIMETER、字符串委员会){
超级();
this.idComite=idComite;
this.idperimeter=idperimeter;
this.comite=comite;
}
}
公共静态布尔addUserComiteRelation(int-idUser,列表comites){
System.out.println(comites.size());//打印正确的数字

对于(int i=0;i使用
p:selectManyCheckbox
的常用方法是提供
javax.faces.model.SelectItem
对象的
列表

如果要在
p:selectManyCheckbox
中使用自己的POJO作为选项,则必须编写一个转换器(
javax.faces.convert.facescoverter

例如,转换器的外观如下所示:

在我的
ManagedBean
(示例:
ComiteManagedBean
)类中,我将把所有
Comite
实例保存在
MAP
(示例:
comiteMap
)中,并将
Comite.idComite
作为键

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;


@FacesConverter("comiteConverter")
public class ComiteConverter implements Converter {

    public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
        if(value != null && value.trim().length() > 0) {
            try {
                Comite comite = (ComiteManagedBean) fc.getExternalContext().getApplicationMap().get("ComiteManagedBean");
                return service.getComiteMap().get(Integer.parseInt(value));
            } catch(NumberFormatException e) {
                throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid theme."));
            }
        }
        else {
            return null;
        }
    }

    public String getAsString(FacesContext fc, UIComponent uic, Object object) {
        if(object != null) {
            return ((Comite) object).getComite();
        }
        else {
            return null;
        }
    }
}

您需要一个@FacesConverter来转换为您的对象。谢谢!还有
converter=“comiteConverter”
,我必须把它放在每一个
f:selectItems
中吗?还是应该把它添加到
p:selectManyCheckbox
中?在
f:selectItems
上没有
converter
属性。它应该用在
p:selectManyCheckbox
上好的,因为我在javax.faces.component上有一个java.lang.NullPointerException在
p:selectManyCheckbox
中,我发现字符串“comite1”和“comite1”是不同的
System.out.println(commite.getComite()+”“+value);if(commite.getComite()==value)return…;
当它打印
comite1 comite1
时,它从不返回,所以我尝试
if(value!=null&&value.trim().length()>0){return new Comite(0,0,value);}否则{return null;}
但它告诉我:
委员会:验证错误:值无效