2016-08-05 33 views
-1

Wenn ich klicke auf meine Zeile in DataTable, Argument selectEvent in meiner onRowSelect-Methode ist null, irgendwelche Ideen warum ???p: dataTable onRowSelect - SelectEvent ist null

form.xhtml Datei:

<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> 

Controller-Methode:

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

Wie kamst du es so zu schaffen? Ich habe noch nie ein Tutorial gesehen oder gezeigt, wo es so gemacht wird. – Kukeltje

Antwort

2

Sie zur Verfügung gestellt unnötige Argument in Ihrem xhtml.

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

Es sollte wie folgt aussehen:

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

Und die Tatsache, dass die Methode ** ** aufgerufen wird, kann nur bedeuten, dass das Argument null ist. Wenn es z.B. Nicht null und eine Zeichenkette, die Methodensignatur würde nicht übereinstimmen und Sie hätten Fehler bekommen. – Kukeltje