数据表中的命令按钮

CommandButton in dataTable

我有一个数据表来显示一些关于用户的信息,最后一列包含一个命令按钮来删除该行。 问题是当我单击任何按钮时,所有行都被删除,即该操作被多次调用。 我的 Xhtml 文件:

<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"#";   
}

}

当我单击任何行中的命令按钮时,所有用户登录都会打印在控制台中。

您使用 EL 在 onclick 中的 backingbean 中调用方法,而您应该将它放在 action 中。 onclick 仅适用于 javascript.

但是这仍然不能解释您描述的行为(但可能是它们的日志行已经打印出来,而您只是 'think' 当您单击按钮时打印它们。)我希望所有呈现页面时发生的删除操作。