我有一个使用JSF2.0的数据表,其中我有使用radiobutton显示的行
<p:dataTable id="dataTable" var="emp" lazy="true" value="#{req.lazyModel}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport}
{FirstPageLink} {PreviousPageLink}
{PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10"
selection="#{req.selectedEmp}"
rowKey="#{req.empNo}"
rowSelectListener="#{req.onRowSelect}">
<p:column selectionMode="single" style="width:18px" />
在Bean中我有
public void onRowSelect(SelectEvent event) {
System.out.println("row "+((Request) event.getObject()).getEmpNo());
}
但是没有调用onRowSelect
方法。这可能是什么原因?
我对radiobutton的想法是当用户点击radiobutton时,我想在主数据表下方显示一个数据表,其中包含所选行的详细信息。
非常感谢任何帮助。
更新1
<p:dataTable id="dataTable" var="emp" lazy="true" value="#{req.lazyModel}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport}
{FirstPageLink} {PreviousPageLink}
{PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10"
selection="#{req.selectedEmp}">
<p:column selectionMode="single" style="width:18px" />
<p:ajax event="rowSelect" listener="#{reqMB.onRowSelect}" />
答案 0 :(得分:15)
Primefaces 3.4.2
中没有此类属性rowSelectListener
使用<p:ajax event="rowSelect"
代替,就像展示
对于广播/复选框等...这些是可用的<p:ajax
事件
查看展示(在页面上搜索p:ajax) DataTable - Selection
答案 1 :(得分:1)
适用于旧版Primefaces。
<p:dataTable id="updateBanData"
var="banSummary"
value="#{sponsorBanMBean.sponsorBanForm.banSummaries}"
styleClass="appTbl"
selection="#{sponsorBanMBean.sponsorBanForm.selectedBanSummary}"
emptyMessage="#{msgs.noRecordsFound}" selectionMode="single"
>
<p:ajax event="rowSelect" listener="#{sponsorBanMBean.onUpdateBanRowSelect}"
update="updateSponsorShipBanDetailPanel"/>
</p:p:dataTable>
<p:outputPanel id="updateSponsorShipBanDetailPanel">
show your selection details.
</p:outputPanel>
Manged Bean内部的Java代码。
public void onUpdateBanRowSelect(SelectEvent selectEvent) {
logger.logMethodStartAsDebug();
BanSummary selectedBanSummaryEvent = (BanSummary) selectEvent.getObject();
if(selectedBanSummaryEvent != null){
sponsorBanForm.setUpdateSponsorShipBanDetail(true);
}
logger.logMethodEndAsDebug();
}