我想将一个对象列表中的一个或多个对象添加到另一个空列表中。我确信第一个列表已经初始化,因为我可以在p:selectManyCheckbox中打印它。
我认为它不会将对象Comite复制到列表中,而是将字符串复制到列表中:java.lang.ClassCastException:java.lang.String无法转换为com.primasatis.jsf.model.Comite < / p>
因此,如何将其复制到列表中?
public class Comite {
private int idComite;
private int idPerimetre;
private String comite;
public Comite(int idComite, int idPerimetre, String comite) {
super();
this.idComite = idComite;
this.idPerimetre = idPerimetre;
this.comite = comite;
}
}
public static boolean addUserComiteRelation(int idUser, List<Comite> comites) {
System.out.println(comites.size()); // print the good number
for(int i=0; i<comites.size();i++) {
System.out.println(comites.get(i).comite); //error here
}
}
<h:form>
<p:outputLabel for="Comites" value="Comités" />
<p:selectManyCheckbox id="Comites" value="#{utilisateur.comites}"
required="true"
requiredMessage="L'utilisateur doit appartenir à au moins un comité">
<f:selectItems value="#{sessionScope.utilisateur.comites}" />
</p:selectManyCheckbox>
<h:message for="Comites"></h:message>
</h:form>
我的课程utilisateur
(@ Named和@SessionScoped)的快速浏览
public class Utilisateur implements Serializable {
private Perimetre perimetreUtilisateur = null;
private List<Comite> comites = null;
@PostConstruct
private void init() {
perimetreUtilisateur = new Perimetre();
comites = new ArrayList<>();
}
}
答案 0 :(得分:1)
使用p:selectManyCheckbox
的通常方法是提供List
个对象中的javax.faces.model.SelectItem
个。
如果您想在p:selectManyCheckbox
中使用自己的Pojos作为选项,则必须编写一个Converter(javax.faces.convert.FacesConverter
)。
例如,您的转换器看起来像:
在我的ManagedBean
(示例:ComiteManagedBean
)类中,我会将所有Comite
实例保留在{{1 }}作为密钥。
MAP