2016-08-05 40 views
-1

当我在dataTable中的行上clik时,我的onRowSelect方法中的参数selectEvent为null,任何想法为什么?p:dataTable onRowSelect - SelectEvent为null

form.xhtml文件:

<h:form> 
     <p:dataTable var="row" 
        value="#{backingBean.model}" 
        lazy="true" 
        rows="#{backingBean.model.getTablePageSize()}" 
        rowKey="#{row.id}" 
        rowsPerPageTemplate="#{loggedUserBean.getPageSizes()}" 
        paginator="true" paginatorPosition="bottom" 
        paginatorTemplate="{PreviousPageLink} {CurrentPageReport} {NextPageLink} {RowsPerPageDropdown}" 
        selection="#{backingBean.model.selectedRow}" 
        selectionMode="single" 
        emptyMessage="#{commonProperties.dataTableEmptyMessage}" 
        emptyMessagePosition="center"> 
      <f:facet name="header"> 
       <h:outputText value="#{properties.title}"/> 
      </f:facet> 

      <p:ajax event="rowSelect" 
        listener="#{controller.onRowSelect(args)}"> 
      </p:ajax> 

控制器的方法:

public void onRowSelect(SelectEvent event) { 
     Row row = (Row) event.getObject(); 
     getBackingBean().getModel().setSelectedRow(row); 
     RequestContext.getCurrentInstance().execute("updateButtons();"); 
    } 
+1

你是怎么来到这样创造的呢?我从来没有见过任何教程或展示过这样做的地方。 – Kukeltje

回答

2

你在你的XHTML提供不必要的争吵。

<p:ajax event="rowSelect" listener="#{controller.onRowSelect(args)}"> 
</p:ajax> 

它应该是这样的:

<p:ajax event="rowSelect" listener="#{controller.onRowSelect}"> 
</p:ajax> 
+1

而调用方法**的事实只能表示参数为null。因为如果它是例如不是null和一个字符串,方法签名不会匹配,你会得到错误。 – Kukeltje