【问题标题】:Delete a specific row TO DATATABLE using jsf and mysql使用 jsf 和 mysql 删除特定行 TO DATATABLE
【发布时间】:2015-02-09 22:25:34
【问题描述】:

我尝试了四天将值从我的 (xadmin.xhtml) 传递给我的 (JadminBeans.java) 但到目前为止没有运气。我想要做的是当我使用数据表按下一行内的删除按钮时,该行内的所有数据都应该从我的数据表和mysql数据库中删除。所以这是我的代码的一部分: P.s:我是 java EE 和 jsf 的新手

xadmin.xhtml

<h:dataTable value="#{Jadmin.messages}" var="o"
            styleClass="order-table"
            headerClass="order-table-header"
            rowClasses="order-table-odd-row,order-table-even-row"
        >

        <h:column>

            <f:facet name="header">username</f:facet>
            #{o.username}

        </h:column>

        <h:column>

            <f:facet name="header">password</f:facet>
            #{o.password}

        </h:column>

        <h:column>

            <f:facet name="header">permission</f:facet>
            #{o.permission}

        </h:column>


        <h:column>

            <f:facet name="header">delete</f:facet>

            <h:commandLink value="Delete" action="#{Jadmin.delete(o.username)}" />

        </h:column>

        </h:dataTable>

JadminBeans.java

@ManagedBean(name = "Jadmin")
@SessionScoped
public class JadminBeans {

    private String username, password, permission;
    private JadminController JaC;

    // insert getter setter here
    public List<JadminBeans> getMessages() {
        return JadminDAO.getAllUsers();
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getPermission() {
        return permission;
    }
    public void setPermission(String permission) {
        this.permission = permission;
    }


  public void  delete(String usr) {

     System.out.println("JadminBeans >> delete() ---------- username= "+usr);
      JadminDAO.deleteUser(usr);

    }

} 

JadminDAO.java

 public static List<JadminBeans> getAllUsers() {
        List<JadminBeans> users = new ArrayList<JadminBeans>();
        try {
            Connection con = DBconnection.getConnection();
            Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery("select * from users");
            while (rs.next()) {
                JadminBeans user = new JadminBeans();
                 user.setUsername(rs.getString("username"));
                 user.setPassword(rs.getString("password"));
                 user.setPermission(rs.getString("permission"));

                 System.out.println("JadminDAO > getAllUsers(): "+rs.getString("username"));

                users.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return users;
    }
public static void deleteUser(String id) {
        try {
            PreparedStatement preparedStatement = connection.prepareStatement("delete from users where username=?");
            // Parameters start with 1
            preparedStatement.setString(1, id);
            preparedStatement.executeUpdate();
            System.out.println("JadminDAO >> deleteUser ----------"+ id);

        } catch (SQLException e) {
            System.out.println("JadminDAO >> deleteUser----------- SQLException :(");
            e.printStackTrace();
        }
    }

【问题讨论】:

  • usrdelete()方法中为空,还是没有从数据库中删除的问题?解释一下它是如何不起作用的,有什么例外吗?
  • 嗨@PredragMaric 问题是 usr 是空的。这意味着我的 xhtml 文件将一个空值传递给我的 java 文件
  • 尝试将action="#{Jadmin.delete(o.username)}"更改为actionListener="#{Jadmin.delete(o.username)}",或者从delete()返回字符串而不是void(action属性应该解析为字符串)。
  • 我使用 actionListener="#{Jadmin.delete(o.username)}" 完成了您告诉我的操作,但出现此错误(找不到方法:class admin_page.JadminBeans.delete(java. lang.String))
  • 第二个建议根本不起作用,但感谢@PredragMaric :)

标签: mysql jsf jakarta-ee primefaces datatable


【解决方案1】:
  • userBean:

    public void deleteUser(String  user){
       UserDAO.DeleteUser(user);
    }
    
  • xhtml 文件:

    <p:commandButton id="confirm" value="Yes Sure"
                    oncomplete="confirmation.hide()"
                    actionListener="#{userBean.deleteUser(userBean.selectedUser.user)}"
                    update=":form1:overviewTableUser">
    </p:commandButton>
    
  • 用户DAO:

    public static void DeleteUser(String user) {
        Connection con = null;
        PreparedStatement ps = null;
    
        try {
            con = Database.getConnection();
             String sql="delete  from userinfo where user=?";
           ps= con.prepareStatement(sql); 
            // Parameters start with 1
            ps.setString(1,"user");
    
            ps.executeUpdate();
    
            System.out.println("user deleted successfully");
    
    
        } catch (SQLException e) {
            System.out.println(" SQLException :(");
            e.printStackTrace();
        }
    }
    

这是我解决这个问题的方法;)

【讨论】:

    猜你喜欢
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    相关资源
    最近更新 更多