Jsf primefaces datatable复合主键多重选择无效
我在使用primefaces datatable和复合主键的多重选择(复选框)时遇到问题 下面是我的xhtmlJsf primefaces datatable复合主键多重选择无效,jsf,netbeans,primefaces,datatable,Jsf,Netbeans,Primefaces,Datatable,我在使用primefaces datatable和复合主键的多重选择(复选框)时遇到问题 下面是我的xhtml <p:dataTable id="cars" var="car" value="#{setujutolakanpencairan.listmktksppencairan0}" rowKey="#{car.mktksppencairan0PK}" selection="#{setujutolaka
<p:dataTable id="cars" var="car" value="#{setujutolakanpencairan.listmktksppencairan0}"
rowKey="#{car.mktksppencairan0PK}"
selection="#{setujutolakanpencairan.mktksppencairan0s}" >
<p:ajax event="rowSelectCheckbox" process="@this"/>
<p:column selectionMode="multiple" style="width:2%" />
<f:facet name="header">
Click "View" button after selecting multiple to see details
</f:facet>
<p:column headerText="Color">
#{car.vcKeterangan}
</p:column>
<f:facet name="footer">
<p:commandButton value="View" icon="ui-icon-search"
update=":form:display" oncomplete="carDialog.show()" actionListener="#{setujutolakanpencairan.outprint()}"/>
</f:facet>
</p:dataTable>
下面是显示数据的列表
public List<Mktksppencairan0> getListmktksppencairan0() {
TypedQuery<Mktksppencairan0> query = em.createNamedQuery("Mktksppencairan0.findBybulantahun", Mktksppencairan0.class);
query.setParameter(
"iTahun", mktkontrol.getTahun());
query.setParameter(
"iBulan", mktkontrol.getBulan());
List<Mktksppencairan0> results = query.getResultList();
return results;
}
public void setListmktksppencairan0(List<Mktksppencairan0> listmktksppencairan0) {
this.listmktksppencairan0 = listmktksppencairan0;
}
当我使用netbeans调试器进行调试时,结果是[]或0
当我说出结果时
INFO: asdfasdf ===[Lcom.infion.web.biaya_marketing.entity.Mktksppencairan0;@a20a9b
INFO: asdfasdf ===64
INFO: asdfasdf ===[Lcom.infion.web.biaya_marketing.entity.Mktksppencairan0;@1f5db6
INFO: asdfasdf ===[Lcom.infion.web.biaya_marketing.entity.Mktksppencairan0;@1f5db6
仅供参考,我正在使用netbeans 7.3、glassfish 3.1.2和primefaces 3.5
*我使用的实体是由netbean生成的,因此有两类实体Mktksppencairan0PK和Mktksppencairan0,其中Mktksppencairan0已添加了Mktksppencairan0PK
谢谢你帮助我
注意:我曾尝试使用非复合主键(单个主键)及其工作方式,但当我尝试使用另一个复合主键时,它不工作我遇到了相同的问题,但我始终使用实体列表
private List<SipreTmpGuardia> beanList;
private List<SipreTmpGuardia> beanListSelected;
您需要将selectionMode设置为“multiple”,正如@dmatos所提到的,rowkey必须为每一行返回唯一的标识符,并且需要保持一致。如果selectabledatamodel变得比访问rowKey中的唯一字段更复杂,则始终可以在primefaces中实现它
public void outprint() {
System.out.println("asdfasdf ===" + mktksppencairan0s.toString().length());
System.out.println("asdfasdf ===" + mktksppencairan0s.toString());
System.out.println("asdfasdf ===" + mktksppencairan0s);
for (Mktksppencairan0 asdf : mktksppencairan0s) {
System.out.println("mktksppencairan0s mktksppencairan0s mktksppencairan0smktksppencairan0s =====" + asdf.toString().length());
}
}
INFO: asdfasdf ===[Lcom.infion.web.biaya_marketing.entity.Mktksppencairan0;@a20a9b
INFO: asdfasdf ===64
INFO: asdfasdf ===[Lcom.infion.web.biaya_marketing.entity.Mktksppencairan0;@1f5db6
INFO: asdfasdf ===[Lcom.infion.web.biaya_marketing.entity.Mktksppencairan0;@1f5db6
private List<SipreTmpGuardia> beanList;
private List<SipreTmpGuardia> beanListSelected;
<!-- DATATABLE-->
<p:dataTable id="dt" var="item" widgetVar="wdt"
rowIndexVar="rowIndex"
value="#{guardia.beanList}"
emptyMessage="#{constantesUtil.LIST_EMPTY}" paginator="true"
rows="20" paginatorPosition="top"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} "
selection="#{guardia.beanListSelected}" rowKey="#{item.codigoRowIndexTemp}"
>
<p:column headerText="N*" width="1%">
<h:outputText value="#{rowIndex+1}" />
</p:column>
<p:column selectionMode="multiple" width="1%"/>
<p:column headerText="Indicador Mes o Reintegro" width="2%">
<h:outputText value="#{item.ctgIndSituacion==2?'Reintegro':'Proceso Mes'}" />
</p:column>
<f:facet name="footer">
<p:commandButton ajax="false" action="#{guardia.saveListTmpGuardia()}" update=":frm:messages,:frm:dt,:frm:dtGM" icon="ui-icon-search" value="Guardar Seleccionados" />
</f:facet>
</p:dataTable>
@EmbeddedId
protected SipreTmpGuardiaPK sipreTmpGuardiaPK;