【发布时间】:2018-03-22 03:00:28
【问题描述】:
我在使用 jsp 页面时遇到了一些问题,其中大部分是隐藏的输入类型。我正在尝试从我的数据库中更新一些字段,当我尝试更新行时,一个字段(THE_RESERVATION.reservationId)给了我值 0,但其他字段很好。我只是不明白为什么会这样。 提交更新后,我的链接将如下所示:localhost:8080/dai/UserControllerServlet?command=UPDATE&reservationId=0&userId=9&dataCheckin=25-02-2018&dataCheckout=28-03-2018&nrPersoane=1&nrCamere=1
如您所见,reservationId 等于 0,我不明白为什么其他的有效而第一个无效。我还有一个 jsp,列出了我在数据库中的所有预订,如果这可能是问题的根源,我也可以提供。
JSP 页面:
<!DOCTYPE html>
<html>
<head>
<title>Update Student</title>
<link type="text/css" rel="stylesheet" href="css/style.css">
<link type="text/css" rel="stylesheet" href="css/add-reserv-style.css">
</head>
<body>
<div id="wrapper">
<div id="header">
<h2>Panou Administrare</h2>
</div>
</div>
<div id="container">
<h3>Update Reservation</h3>
<form action="UserControllerServlet" method="GET">
<input type="hidden" name="command" value="UPDATE"/>
<input type="hidden" name="reservationId" value="${THE_RESERVATION.reservationId}"/>
<table>
<tbody>
<tr>
<td><label>User id:</label></td>
<td><input type="text" name="userId"
value="${THE_RESERVATION.userId}" /></td>
</tr>
<tr>
<td><label>Data Checkin:</label></td>
<td><input type="text" name="dataCheckin"
value="${THE_RESERVATION.dataCheckin}"/></td>
</tr>
<tr>
<td><label>Data Checkout:</label></td>
<td><input type="text" name="dataCheckout"
value="${THE_RESERVATION.dataCheckout}"/></td>
</tr>
<tr>
<td><label>Numar Persoane:</label></td>
<td><input type="text" name="nrPersoane"
value="${THE_RESERVATION.nrPersoane}"/></td>
</tr>
<tr>
<td><label>Numar Camere:</label></td>
<td><input type="text" name="nrCamere"
value="${THE_RESERVATION.nrCamere}"/></td>
</tr>
<tr>
<td><label></label></td>
<td><input type="submit" value="Save" class="save"/></td>
</tr>
</tbody>
</table>
</form>
<div style="clear:both;"></div>
<p>
<a href="UserControllerServlet">Back to List </a>
</p>
</div>
</body>
</html>
SERVLET 类:
public class UserControllerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private ReservationDao reservationDao;
private DBConnection dbConnection;
@Override
public void init() throws ServletException {
super.init();
try {
reservationDao = new ReservationDao(dbConnection);
}catch(Exception e) {
throw new ServletException(e);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String theCommand = request.getParameter("command");
if(theCommand == null) {
theCommand = "LIST";
}
switch(theCommand) {
case "LIST":
listReservations(request, response);
break;
case "ADD":
addReservation(request, response);
break;
case "LOAD":
loadReservation(request, response);
break;
case "UPDATE":
updateReservation(request, response);
break;
case "DELETE":
deleteReservation(request, response);
break;
default:
listReservations(request, response);
}
}catch(Exception e) {
e.printStackTrace();
}
}
private void deleteReservation(HttpServletRequest request, HttpServletResponse response)
throws Exception {
String theReservationId = request.getParameter("reservationId");
reservationDao.deleteReservation(theReservationId);
listReservations(request, response);
}
private void updateReservation(HttpServletRequest request, HttpServletResponse response)
throws Exception {
int reservationId = Integer.parseInt(request.getParameter("reservationId"));
int idUser = Integer.parseInt(request.getParameter("userId"));
String dataCheckin = request.getParameter("dataCheckin");
String dataCheckout = request.getParameter("dataCheckout");
int nrPersoane = Integer.parseInt(request.getParameter("nrPersoane"));
int nrCamere = Integer.parseInt(request.getParameter("nrCamere"));
ReservationBean theReservation = new ReservationBean(reservationId, idUser, dataCheckin, dataCheckout,nrPersoane,nrCamere);
reservationDao.updateReservation(theReservation);
listReservations(request, response);
}
private void loadReservation(HttpServletRequest request, HttpServletResponse response) throws Exception {
String theReservationId = request.getParameter("reservationId");
ReservationBean theReservation = reservationDao.getReservation(theReservationId);
request.setAttribute("THE_RESERVATION", theReservation);
request.getRequestDispatcher("/update-user-reservation.jsp").forward(request, response);
}
private void addReservation(HttpServletRequest request, HttpServletResponse response) throws Exception {
int userId = Integer.parseInt(request.getParameter("userId"));
String dataCheckin = request.getParameter("dataCheckin");
String dataCheckout = request.getParameter("dataCheckout");
int nrPersoane = Integer.parseInt(request.getParameter("nrPersoane"));
int nrCamere = Integer.parseInt(request.getParameter("nrCamere"));
ReservationBean theReservation = new ReservationBean(userId, dataCheckin, dataCheckout,nrPersoane,nrCamere);
reservationDao.addReservation(theReservation);
listReservations(request, response);
}
private void listReservations(HttpServletRequest request, HttpServletResponse response)
throws Exception {
List<ReservationBean> reservations = reservationDao.getReservations();
request.setAttribute("RESERVATION_LIST", reservations);
request.getRequestDispatcher("/list-reservations.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
另外,当我编辑一行时,我有那个加载方法,它为我选择的预订加载 reservationId,但是当我编辑字段时,预订 id 将变为 0。
【问题讨论】:
-
如何在
reservationDao.getReservation(theReservationId)的Reservation对象中填充字段? -
我不知道如何在这里添加代码,所以我发布了另一个答案