这是我的 Struts 文件,我在其中映射了所有操作文件
struts.xml:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="AddTaskAction" class="actions.AddTaskAction" method="post">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="UpdateTaskAction"
class="actions.UpdateTaskAction" method="post">
<result name="success">/displayTask.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="DeleteTaskAction"
class="actions.DeleteTaskAction" method="post">
<result name="success">/displayTask.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
这是
Action
类文件,我在这里写了关于使用Hibernate的事务、会话将数据插入数据库的内容
AddTaskAction.java:
package actions;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.opensymphony.xwork2.ActionSupport;
import helper.FactoryProvider;
import model.Task;
public class AddTaskAction extends ActionSupport {
private Task t = new Task();
public String post() {
Session session = FactoryProvider.getFactory().openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.persist(t);
tx.commit();
addActionMessage("Task added successfully!");
return SUCCESS;
} catch (Exception e) {
if (tx != null && tx.isActive()) {
tx.rollback();
}
addActionError("Error adding task: " + e.getMessage());
return ERROR;
} finally {
session.close();
}
}
public Task getT() {
return t;
}
public void setT(Task t) {
this.t = t;
}
}
在下面的 JSP 页面中,我编写了一段代码来从用户那里获取数据,它将数据重定向到我的操作文件中以插入到数据库中
addTask.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Add Task</title>
</head>
<body>
<div class="form-container">
<form action="AddTaskAction" method="post">
<div class="form-element">
<label for="name" class="form-label">Task Name</label>
<input type="text" id="name" name="t.name" required>
</div>
<div class="form-element">
<label for="description" class="form-label">Description</label>
<input type="text" id="description" name="t.description" required>
</div>
<div class="form-element">
<label for="due_date" class="form-label">Due Date</label>
<input type="text" id="due_date" name="t.due_date" required>
</div>
<div class="form-element">
<label for="level" class="form-label">Priority Level</label>
<input type="text" id="level" name="t.level" required>
</div>
<div class="form-element">
<label for="status" class="form-label">Status</label>
<input type="text" id="status" name="t.status" >
</div>
<div class="form-submit">
<button type="submit">ADD</button>
</div>
</form>
</div>
</body>
</html>
我正在尝试使用 Struts2 将数据插入数据库,但结果我经常遇到上述错误
应该配置
INPUT
结果。
<action name="AddTaskAction" class="actions.AddTaskAction" method="post">
<result name="success">/success.jsp</result>
<result name="input">/addTask.jsp</result>
<result name="error">/error.jsp</result>
</action>
如果您的操作有错误,结果将由INPUT
拦截器返回。在执行操作之前,堆栈中的拦截器可能会遇到这些错误。例如,执行验证时可能会出现验证错误,因为堆栈上有一个workflow
拦截器。validation