首页 > 解决方案 > HTML 表单参数全部为空

问题描述

我必须创建一个表单来更新一些用户配置文件数据。我开发了这个 html 表单,但是当我提交并尝试获取请求参数时,它们都导致 null。

表格中填充了实际数据,然后您可以修改它们以重新填充新数据。

谢谢

    <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
    <link rel="stylesheet" type="text/css" media="all" href="../CSS/style.css" th:href="@{.../CSS/style.css}"/>
    <script type="text/javascript" src="../js/signup.js" th:src="@{/js/signup.js}" defer> </script>
    <script type="text/javascript" src="../js/updateProfile.js" th:src="@{/js/updateProfile.js}" defer> </script>
    <script type="text/javascript"  th:src="@{/js/loadimage.js}" defer ></script> <!--defer fa eseguire js dopo il parsing di html-->
</head>
<body>
<div class="container">
    <h1>Profilo Utente</h1>
        <div class="form">
            <form action="updateprofile" method="post" enctype="multipart/form-data" onsubmit="return formValidation()">
                <p>
                    <label for="username">Username: </label><br>
                    <input type="text" id="username" name="username" th:attr="value=${session.user.username}" required/><br>
                </p>
                <p>
                    <label for="email">Mail: </label><br>
                    <input type="email" id="email" name="email" th:attr="value=${session.user.email}" required/><br>
                </p>
                <p>
                    <label for="password">Password: </label><br>
                    <input type="password" id="password" name="password"
                           pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}"
                           title="Deve contenere almeno 8 caratteri di cui un numero, una lettera maiuscola e una lettera minuscola." /><br>
                </p>
                <p>
                    <label id="text-password-confirm" for="password-confirm">Reinserisci password: </label><br>
                    <input type="password" id="password-confirm"  />
                </p>
                <p id="password-message" class="error-message"></p>
                <p>
                    Tipo di utente:<br>
                    <input type="radio" name="usertype" id="manager" value="manager" th:checked="${session.user.isManager!=null && session.user.isManager}" required/>
                    <label for="manager">Manager</label><br>
                    <input type="radio" name="usertype" id="worker" value="worker" th:checked="${session.user.isManager!= null && !session.user.isManager}" checked required/>
                    <label for="worker">Worker</label><br>
                </p>
                <div id="worker-data">
                    <p>
                        <label for="exp">Exp level:</label><br>
                        <select name="exp" id="exp">
                            <option value="" disabled selected>Exp level</option>
                            <option value="LOW" th:selected="${session.user.exp == 'LOW'}">LOW</option>
                            <option value="MEDIUM" th:selected="${session.user.exp == 'MEDIUM'}">MEDIUM</option>
                            <option value="HIGH" th:selected="${session.user.exp == 'HIGH'}">HIGH</option>
                        </select><br>
                    </p>
                    <p>
                        <label for="photo">Profile photo</label><br>
                    <div id="container"style="position: relative; width:300px;">
                        <canvas id="canvas_background" width="300px" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
                    </div>
                    <input type="file" name="photo" id="photo" accept="image/*"/><br>
                </div>
                <!-- TODO: Rivedere i messaggi di errore inseriti -->
                <span class="error-message" th:if="${session.signupfailed}">Salvataggio non riuscito</span>
                <p>
                    <input id="buttonModifica" type="button" value="Modifica" />
                    <input id="buttonAnnulla" type="reset" value="Annulla" />
                    <input id="buttonAggiorna" type="submit" value="Aggiorna" />
                </p>
            </form>
        </div>
</div>
</body>
</html>

这是更新配置文件控制器的 java 代码

public class UpdateProfile extends AbstractServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        User user = (User) session.getAttribute("sessionUser");

        if (user != null && user.isValid()){
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            String email = request.getParameter("email");
            boolean isManager = request.getParameter("usertype").equals("manager");
            String photo;
            Level exp;
            if (isManager) {
                photo = null;
                exp = null;
            } else {
                photo = ImageEncoder.encodeImage(request.getPart("photo"));
                exp = Level.valueOf(request.getParameter("exp"));
            }

            user.setUsername(username);
            user.setPassword(password);
            user.setEmail(email);
            user.setIsManager(isManager);
            user.setPhoto(photo);
            user.setExp(exp);
        }
        try {
            UserDAO userDAO = new UserDAO(connection);
            userDAO.updateProfile(user);
            success=true;
        } catch (SQLException e) {

        }

}

标签: javahtml

解决方案


尝试用这个更新你的servlet代码..

    @WebServlet(
      name = "UpdateProfile", 
      urlPatterns = {"/updateprofile"})
    public class UpdateProfile extends HttpServlet {

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            HttpSession session = request.getSession();
            User user = (User) session.getAttribute("sessionUser");

            if (user != null && user.isValid()){
                String username = request.getParameter("username");
                String password = request.getParameter("password");
                String email = request.getParameter("email");
                boolean isManager = request.getParameter("usertype").equals("manager");
                String photo;
                Level exp;
                if (isManager) {
                    photo = null;
                    exp = null;
                } else {
                    photo = ImageEncoder.encodeImage(request.getPart("photo"));
                    exp = Level.valueOf(request.getParameter("exp"));
                }

                user.setUsername(username);
                user.setPassword(password);
                user.setEmail(email);
                user.setIsManager(isManager);
                user.setPhoto(photo);
                user.setExp(exp);
            }
            try {
                UserDAO userDAO = new UserDAO(connection);
                userDAO.updateProfile(user);
                success=true;
            } catch (SQLException e) {

            }

    }
}

推荐阅读