简体   繁体   中英

How to fetch data from dynamically generated JSP page in Struts 2?

I am generating below page using Struts2. It is generating properly.

My question is how fetch the value from generated page when I click on delete button so I can further process for delete data from database and regenerate page with remaining data?

  <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
 <%@ taglib uri="/struts-tags" prefix="s" %>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h3>All Records:</h3>
        <table>  
        <s:form action="upload"> 
        <s:iterator   value="list"> 
        <tr>
        <td ><s:property value="id"/></td> 
        <td ><s:property value="name"/></td>  
        <td><s:property value="password"/></td>  
        <td><s:property value="email"/></td> 
        <td><s:property  value="gender"/></td>
        <td><s:checkbox  name="checked" label="isChecked"  theme="simple" /></td>       
        </tr>    
        </s:iterator> 
        <s:submit value="delete" name="delete" />
        </s:form>
        </table>
</body>
</html>

RegisterAction.java

package com.javatpoint;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class RegisterAction {
private String name,password,email,gender,country;
int id;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getGender() {
    return gender;
}

public void setGender(String gender) {
    this.gender = gender;
}

public String getCountry() {
    return country;
}

public void setCountry(String country) {
    this.country = country;
}

ArrayList<User> list=new ArrayList<User>();  

public ArrayList<User> getList() {  
    return list;  
}  
public void setList(ArrayList<User> list) {  
    this.list = list;  
}  

public String execute(){
    int i=RegisterDao.save(this);
    if(i>0){
        Connection con=RegisterDao.con;
        try {
             PreparedStatement ps=con.prepareStatement("select * from STRUTSUSER");
             ResultSet rs=ps.executeQuery();  
        //  rs = ps.getGeneratedKeys();
              while(rs.next()){  
               User user=new User();  
               user.setId(rs.getInt(1));

               user.setName(rs.getString(1));  
               user.setPassword(rs.getString(2));  
               user.setEmail(rs.getString(3)); 
               user.setGender(rs.getString(4));
               list.add(user);  
              // System.out.println("yo");
              }  

              con.close();  
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    return "success";
    }
    return "error";
}

you can try something as below:

  public class RegisterAction {
   ....
    public String execute(){
    ...
    }

    public List<User> getAllUsers() {
    List<User> users = new ArrayList<User>();
    Connection con=RegisterDao.con;
    try
    {
        Statement statement = conn.createStatement();
        ResultSet rs = statement.executeQuery("select * from STRUTSUSER");
        while (rs.next())
        {
            User user = new User();
            user.setID(rs.getInt("id"));
            user.setName(rs.getString("name"));
            user.setPassword(rs.getString("pass"));
            user.setEmailID(rs.getString("emailid"));
            users.add(user);
        }
    } 
    catch (SQLException e)
    {
        e.printStackTrace();
    }
    return users;
   }

    public String delete() {
      HttpServletRequest request ServletActionContext.getRequest();
      int userId = request.getParameter("id");
      deleteUser(userId);
      return SUCCESS;
     }

    private void deleteUser(int userId)
        {
            Connection con=RegisterDao.con;
            try
            {
               PreparedStatement ps = conn.prepareStatement("delete from STRUTSUSER where id=?");
                // Parameters start with 1
                ps.setInt(1, userId);
                ps.executeUpdate();

            } catch (SQLException e)
            {
                e.printStackTrace();
            }
        }
     }

JSP page : view.jsp

  <s:iterator value="list">
   ...
 </s:iterator>
 <s:hidden name="id" value="%{#list.id}" />
 <s:submit value="delete" name ="delete" action="deleteUserAction"/>

In Struts.xml

 <action name="deleteUserAction" class="example.RegisterAction" method="delete">
       <result name="success">view.jsp</result>
 </action>

After deleting user, you can call getAllUsers() from action

Hope this Helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM