gpt4 book ai didi

java - 从 jsp 检索更新的数组列表到 struts2 中的 Action 类

转载 作者:行者123 更新时间:2023-11-30 11:11:59 27 4
gpt4 key购买 nike

我正在检索数据库值并将它们放入数组列表 (al) 中。该数组列表以表格的形式显示在 JSP 页面中。我想修改 JSP 页面中的值并使用 Struts2 更新数据库中的新值。我该怎么做?

主要 Action 类

public class HelloWorldAction extends ActionSupport implements SessionAware{
ProjectDb pd;
public ProjectDb getPd() {
return pd;
}

public void setPd(ProjectDb pd) {
this.pd = pd;
}
ArrayList<ProjectDb> al=new ArrayList<ProjectDb>();
public ArrayList<ProjectDb> getAl() {

return al;
}

public String status() throws Exception{
boolean flag=false;


try{
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");

Connection conn = DriverManager
.getConnection("jdbc:ucanaccess://D:\\Db1.mdb");

username=(String) map.get("user");
PreparedStatement ps=conn.prepareStatement(
"SELECT * FROM StaleInGers WHERE (((StaleInGers.mailId)=(Select email from DBA where username='"+username+"' and email='"+email+"')))");
//ps.setString(1,username);
//ps.setString(2,password);

ResultSet rs=ps.executeQuery();

al=new ArrayList<ProjectDb>();
while(rs.next()){
pd =new ProjectDb();
pd.setProject(rs.getString("project"));
pd.setStatus(rs.getString("status"));
pd.setComments(rs.getString("comments"));

al.add(pd);


flag=true;
}


} catch (Exception e) {
System.out.println("Exception : " +e);
}
if(flag==true){
return "success";
}
else{
return "error";
}
}
}

这是 POJO 类

public class ProjectDb {
private String project,status,comments,email;

public String getEmail() {
return email;
}

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

public String getProject() {
return project;
}

public void setProject(String project) {
this.project = project;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public String getComments() {
return comments;
}

public void setComments(String comments) {
this.comments = comments;
}
}

这是我显示数组列表的 JSP 页面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4
/loose.dtd">
<html>
<head>
<style type="text/css">
table,td,th {
border: 1px solid green;
width:100%;
}

th {
background-color: green;
color: white;
}
</style>
</head>
<body>
<form action="update">
<table >
<tr>
<th>Project</th>
<th>Status</th>
<th>Comments</th>
</tr>
<s:iterator value="al" id="array" status="alStatus">
<tr>
<td><s:property value="%{project}"/></td>
<td><s:textfield name="array[%{#alStatus.index}].status" value="%{status}" theme="simple"
/></td>
<td><s:textfield name="array[%{#alStatus.index}].comments" value="%{comments}" theme="simple"
/></td>
</tr>
</s:iterator>
</table><br><br>
<input style="opacity: 0.7; border-radius: 5px; border: 0; width: 250px;
height:35px;
font-family: Goudy Old Style; font-size: 22px; background: #00CC80;"
type="submit" value="Submit">
</form>
</body>
</html>

最佳答案

首先想到的是制作输入类型的表字段,并将来自 ArrayList 的值放在每个输入值参数上。在此之后创建一个更新方法(如 satus() 之一),并使用您的 pojo 的 setter 更新输入值,触发表单操作的更新方法。

它应该看起来像这样:

HelloWorldAction 中的更新方法:

public void update(ProjectDB prjDb) throws Exception{
boolean flag=false;
PreparedStatement ps = null;


try{
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");

Connection conn = DriverManager
.getConnection("jdbc:ucanaccess://D:\\Db1.mdb");

conn.setAutoCommit(false);
username=(String) map.get("user");
/*Selecting which field would be updated */
if(!"".equals(prjDb.getEmail().trim())){
ps=conn.prepareStatement(
"UPDATE StaleInGers SET email=? WHERE (((StaleInGers.mailId)=(Select email from DBA where username='"+username+"' and email='"+email+"')))");
ps.setString(1,prjDb.getEmail());
}
//else if(...){...} --> Treat all the cases, if email is not empty, and another field is not empty, if only one field is not empty, etc..


int i = ps.executeUpdate();
conn.commit();




if(i>0){ flag=true; }
}


} catch (Exception e) {
System.out.println("Exception : " +e);
}
if(flag==true){
return "success";
}
else{
return "error";
}
}
//Don't forget to close the connection and prepared statement

这些字段必须像您在 JSP 中所做的那样,从使您进入此页面(您可以在此处进行更新)的 Action 数组中填充。这是更新方法的 Demo 示例,但它应该可以工作,我让您自己编写其余代码。

关于java - 从 jsp 检索更新的数组列表到 struts2 中的 Action 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27123296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com