2015-05-04 43 views
0

我有一個數據表來顯示有關用戶的一些信息,最後一列包含一個命令按鈕來刪除該行。 問題是當我點擊任何按鈕時,所有的行被刪除,這是行動被調用多次。 我的XHTML文件:CommandButton in dataTable

<h:form> 
    <p:dataTable var="user" value="#{admin.users}"> 
    <p:column headerText="Login"> 
     <h:outputText value="#{user.login}" /> 
    </p:column> 

    <p:column headerText="Nom"> 
     <h:outputText value="#{user.nom}" /> 
    </p:column> 

    <p:column headerText="Prenom"> 
     <h:outputText value="#{user.prenom}" /> 
    </p:column> 

    <p:column headerText="Password"> 
     <h:outputText value="#{user.password}" /> 
    </p:column> 
    <p:column headerText="Operation"> 
    <p:commandButton value="supprimer" onClick="#{admin.delete_user(user.login)}" ajax="false" /> 
    </p:column> 
</p:dataTable> 
</h:form> 

我的豆

@ManagedBean (name="admin") 
    @ViewScoped 
    public class Admin { 
    private ArrayList<User> users; 
    //getters & setters 
    public String delete_user(String login) 
{ 

    System.out.println(login); 

    UserDao ud=new UserDao(); 

    try{ 


     ud.Delete_Query(login); 

    } 
    catch(Exception e){System.out.println(e.getStackTrace());} 




    return"#"; 
} 

} 

當我點擊任何一行的命令按鈕,所有用戶登錄時打印在控制檯中。

+0

您可以在'onclick'中使用EL,而應該將其放入'action'中。但是這個stil並沒有解釋你描述的行爲(但是可能是因爲他們的日誌行已經被打印出來了,而你只是'想'它們會在你點擊按鈕時被打印出來。)我希望所有的刪除操作都發生了當頁面呈現時 – Kukeltje

+0

是的,你是對的,所有刪除操作發生在頁面呈現時。 –

+0

所以你應該切換到行動。一個onclick只是爲了javascript。無論如何,添加評論作爲它應該的答案 – Kukeltje

回答

0

您使用EL調用onclick中的後臺bean中的方法,而應將其放入action中。 Onclick僅適用於JavaScript。

但是這個stil沒有解釋你描述的行爲(但可能是因爲他們的日誌行已經被打印了,而你只是想'當你點擊按鈕時打印它們')。我希望所有的刪除操作在頁面呈現時發生。