我正在学习使用 servlet。创建了两个JSP页面:
第一个用于编辑对象:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" %>
<html lang="ru">
<head>
<title>Edit</title>
</head>
<body>
<form method="POST" action='meals?action=edit' name="editMeal">
// Содержимое формы
<button type="submit">Edit</button>
</form>
</body>
</html>
第二个创建:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" %>
<html lang="ru">
<head>
<title>Insert</title>
</head>
<body>
<form method="POST" action='meals?action=insert' name="insertMeal">
// Содержимое формы
<button type="submit">Insert</button>
</form>
</body>
</html>
有什么意义。每个JSP页面都将数据发送到doPost()
servlet 方法,在该方法中检索actionif
参数并创建或编辑块:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
if (action.equals("insert")) {
// логика создания объекта
}
if (action.equals("edit")) {
// логика редактирования объекта
}
// логика отправки запроса
}
在使用调试器时,我发现尽管操作是edit,但由于某种原因,插入块内的逻辑被执行了。这会导致NullPointerException,因为 创建和编辑我请求不同的数据。为什么会这样?
最可能的原因:
正在执行一些其他代码。例如,问题中的代码尚未重新编译。