【问题标题】:Java JSP hidden field not showing what it shouldJava JSP 隐藏字段没有显示它应该显示的内容
【发布时间】: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 对象中填充字段?
  • 我不知道如何在这里添加代码,所以我发布了另一个答案

标签: java jsp servlets


【解决方案1】:

填充预订的方法是这个:

public ReservationBean getReservation(String theReservationId) throws Exception {
    ReservationBean theReservation = null;

    Connection myConn = null;
    PreparedStatement myStmt = null;
    ResultSet myRs = null;
    int reservationId;
    try {

        reservationId = Integer.parseInt(theReservationId);

        myConn = DBConnection.createConnection();

        String sql = "select * from reservation where reservation_id=?";

        myStmt = myConn.prepareStatement(sql);

        myStmt.setInt(1, reservationId);

        myRs = myStmt.executeQuery();


        if(myRs.next()) {
            int user_id = myRs.getInt("user_id");
            String dataCheckin = myRs.getString("data_checkin");
            String dataCheckout = myRs.getString("data_checkout");
            int nrPersoane = myRs.getInt("nr_persoane");
            int nr_camere = myRs.getInt("nr_camere");


            theReservation = new ReservationBean(user_id, dataCheckin, dataCheckout, nrPersoane,nr_camere);

        }else {
            throw new Exception("Could not find reservation id: " + theReservationId);
        }
        return theReservation;

    }finally {

        close(myConn, myStmt, myRs);
    }


  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    相关资源
    最近更新 更多