2011-05-15 103 views
1

我試圖嵌入Primefaces commandLink並從Primefaces dataTable的列內的鏈接調用動作偵聽器。這不可能嗎? 「測試」onclick警報被解僱,但它永遠不會讓我的bean的方法。Primefaces dataTable with embedded commandLink

<p:dataTable var="location" value="#{adminBean.locations}"> 
     <p:column headerText="Options"> 
      <p:commandLink value="delete" actionListener="#{admin.deleteLocation}" onclick="alert('test')"/> 
     </p:column>  
    </p:dataTable> 

bean代碼:

public void deleteLocation(ActionEvent e){ 
    //delete logic here... 
} 
+0

的[不調用的commandButton/commandLink/AJAX動作/監聽器方法可能的複製或輸入值沒有設置/更新](https://stackoverflow.com/questions/2118656/commandbutton-commandlink-ajax-action-listener-method-not-invoked-or-input-value) – Kukeltje 2017-11-11 07:30:41

回答

3

這是可能的。你的actionListener應該被調用。請記住,p:commandButton默認使用ajax。所以你應該使用update屬性來定義要更新的組件。

但是,我不知道這是否會影響actionListener。你用action而不是actionListener來試試嗎?

下面是一個例子,我怎麼得到它的工作:

<p:commandLink action="#{spc.selectPatient(item)}" 
       ajax="false" 
       value="Open"/> 

bean方法如下所示:

public String selectPatient(Patient p) { 
    // do something 
    // return some outcome 
} 
+0

我會給你一個嘗試但我也看到這個例子... http://www.primefaces.org/showcase/ui/datatableRowSelectionByColumn.jsf – c12 2011-05-16 18:06:32