繁体   English   中英

如何在Spring MVC中的服务器端验证上显示错误消息

[英]how to display error message on server side validation in spring mvc

 //This is my loginController.java import java.io.IOException; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @Controller public class LoginController { @RequestMapping(value="/login.htm", method = RequestMethod.POST) public String login(@RequestParam(value="userid", required=true) String userid, @RequestParam(value="password", required=true) String password, @RequestParam(value="confirmpassword", required=true) String confirmpassword, @RequestParam(value="role", required=true) String role, Map<String, Object> model) { if(userid.matches("^[a-zA-Z0-9]{5,24}$") && password.matches("^(?=.*[0-9])(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=])(?=\\\\S+$).{5,15}$") && confirmpassword.matches("^(?=.*[0-9])(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=])(?=\\\\S+$).{6,20}$") && (role.equals(new String("OPS(Operational)"))||role.equals(new String("Helpdesk")))) { model.put("userid", userid); model.put("password", password); model.put("confirmpassword", confirmpassword); model.put("role", role); System.out.println("successful!"); return "page2"; } else { return "login"; } } protected void doPost(HttpServletRequest request, HttpServletResponse response) { String userid = request.getParameter("userid"); String password = request.getParameter("password"); String confirmpassword = request.getParameter("confirmpassword"); String role = request.getParameter("role"); try { request.getRequestDispatcher("/login.jsp").forward(request, response); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userid = request.getParameter("userid"); String password = request.getParameter("password"); String confirmpassword = request.getParameter("confirmpassword"); String role = request.getParameter("role"); request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response); } } 
 //This is my login.jsp file <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ include file="include.jsp" %> <html> <head> <meta charset="utf-8"> </head> <body> <div align="center" id='formlogin' class="container"> <form method="post" id="loginForm" name="loginForm" action="login.htm"> <table class="tableprop" border="0" width="90%" cellspacing="5" cellpadding="5"> <h3> Add a new user </h3> <tr> <td align="center">User ID:</td> <td><input tabindex="5" size="20" type="text" name="userid" id="userid" value="<%=request.getParameter("userid")!=null?request.getParameter("userid"):""%>"/></td> </tr> <tr> <td align="center">Password:</td> <td><input tabindex="5" size="20" type="password" name="password" id="password" value="<%=request.getParameter("password")!=null?request.getParameter("password"):""%>"/></td> </tr> <tr> <td align="center">Confirm Password:</td> <td><input tabindex="5" size="20" type="password" name="confirmpassword" id="confirmpassword" value="<%=request.getParameter("confirmpassword")!=null?request.getParameter("confirmpassword"):""%>"/></td> </tr> <tr> <td align="center">Role:</td> <td><select name="role" id="role" title="Please select role" tabindex="5" value="<%=request.getParameter("role")!=null?request.getParameter("role"):""%>"/> <option value="">Select a specific role</option> <option value="OPS(Operational)">OPS(Operational)</option> <option value="Helpdesk">Helpdesk</option> </select></td> </tr> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> <tr> <td align="center" colspan="4"><input tabindex="7" type="submit" value="Submit" id="submit" class="submit"/></td> </tr> <!-- <div id="dialog" title="Dialog Title">I'm in a dialog</div> --> </table> </form> </div> <script> // just for the demos, avoids form submit jQuery.validator.setDefaults({ debug: true, success: "valid" }); </script> </body> </html> 

我在这里添加了2个文件。 第一个是loginController.java ,另一个是login.jsp我已经在jquery中完成了客户端验证。 现在,我想在loginController.java文件中的服务器端验证上显示错误消息,该文件具有用于服务器端验证的代码。 而且我也希望一旦loginController.java是否正确编写就进行检查。

您可以使用Spring Validator界面来构建自己的自定义验证器并使用spring表单标签。

       User.java
       package com.expertwebindia.beans;
        public class User {
            private String name;
            private String email;
            private String address;
            private String country;
            private String state;
            private String city;
            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public String getAddress() {
                return address;
            }

            public void setAddress(String address) {
                this.address = address;
            }

            public String getCountry() {
                return country;
            }

            public void setCountry(String country) {
                this.country = country;
            }

            public String getState() {
                return state;
            }

            public void setState(String state) {
                this.state = state;
            }

            public String getCity() {
                return city;
            }

            public void setCity(String city) {
                this.city = city;
            }

            public String getEmail() {
                return email;
            }

            public void setEmail(String email) {
                this.email = email;
            }



        }

                UserValidator.java



package com.expertwebindia.validators;
                import org.springframework.stereotype.Component;
                import org.springframework.validation.Errors;
                import org.springframework.validation.ValidationUtils;
                import org.springframework.validation.Validator;

                import com.expertwebindia.beans.User;
                @Component
                public class UserValidator implements Validator
                {

                    public boolean supports(Class clazz) {
                        return User.class.equals(clazz);
                    }
                    public void validate(java.lang.Object arg0, Errors arg1) {
                          ValidationUtils.rejectIfEmptyOrWhitespace(arg1, "name", "name.required", "Name is required.");
                          ValidationUtils.rejectIfEmptyOrWhitespace(arg1, "email", "Name.required", "Email is required.");
                          ValidationUtils.rejectIfEmptyOrWhitespace(arg1, "address", "name.required", "Address is required.");
                          ValidationUtils.rejectIfEmptyOrWhitespace(arg1, "country", "country.required", "Country is required.");
                          ValidationUtils.rejectIfEmptyOrWhitespace(arg1, "state", "state.required", "State is required.");
                          ValidationUtils.rejectIfEmptyOrWhitespace(arg1, "city", "city.required", "City is required.");
                    }

                }

    In controller you need to the following code to validate your bean.
    @RequestMapping(value = "/login", method = RequestMethod.POST)
        public String doLogin(@ModelAttribute("userForm") User userForm,
                BindingResult result, Map<String, Object> model) {
            validator.validate(userForm, result);
            System.out.println("Email:"+userForm.getEmail());
            if (result.hasErrors()) {
                return "register";
            }else{

                return "success";
            }
        }

    Please find more details about this in link below.
    http://www.expertwebindia.com/spring-3-mvc-custom-validator-example/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM