Jsf 无法使用selectManyCheckbox在对象的arrayList中添加对象
我想将对象列表中的一个或多个对象添加到另一个空列表中。我确信第一个列表已经初始化,因为我可以在p:selectManyCheckbox中打印它 我认为它不会将对象Comite复制到列表中,而是在我得到错误时将字符串复制到列表中:java.lang.ClassCastException:java.lang.string不能转换为com.primastis.jsf.model.Comite 因此,如何将其复制到列表中Jsf 无法使用selectManyCheckbox在对象的arrayList中添加对象,jsf,primefaces,Jsf,Primefaces,我想将对象列表中的一个或多个对象添加到另一个空列表中。我确信第一个列表已经初始化,因为我可以在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;}
但它告诉我:委员会:验证错误:值无效