【发布时间】:2013-11-28 16:18:45
【问题描述】:
我使用 JSF 2.0 和 primefaces 4.0
我的 JSF 代码:
<c:forEach items="#{materielbean.materielist}" var="list" >
<p:dataTable var="car" value="#{materielbean.listeitemsmaterielbyidmateriel(list.idmateriel)}" rowKey="#{car.iditemsmateriel}"
selection="#{fournisseurbean.selectedItemsMateriel}" selectionMode="multiple" style="width : 664px; ">
<f:facet name="header">
#{list.nommateriel}
</f:facet>
<p:column headerText="designation">
#{car.designation}
</p:column>
<p:column headerText="Unité">
#{car.unite}
</p:column>
</p:dataTable>
</c:forEach>
以及使用的功能
listeitemsmaterielbyidmateriel(list.idmateriel)
是这样定义的
public List listeitemsmaterielbyidmateriel(int i){
return itemmaterielDAO.DisplayItemsMaterielDAOselonmMateriel(i);
}
最后这是 DAO 代码
public List DisplayItemsMaterielDAOselonmMateriel(int idmateriel )
{
Query q = em.createQuery("select LIM from ItemsMateriel LIM inner join LIM.materiel where LIM.materiel.idmateriel= :idmateriel");
q.setParameter("idmateriel", idmateriel);
List l = new ArrayList();
l= q.getResultList();
return l ;
}
当我运行这段代码时,我没有出错,但是selection="#fournisseurbean.selectedItemsMateriel}"
只返回最终迭代(最终数据表)的值,这是因为在每次迭代中,列表都会崩溃旧的选定对象并放置新的选定对象,我该怎么做才能防止这种情况发生??
【问题讨论】:
-
这是一个已知问题,但最近已在 MyFaces 2.2.x 中修复。详情请参阅:MYFACES-3811。你可以试试latest snapshot 看看它是否适合你。
标签: jsf jsf-2 primefaces