简体   繁体   English

Spring MVC错误验证错误

[英]Spring MVC error validation error

index.jsp 的index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<div align="center" style="margin-top:100px;">
    <font face="verdana" size="2">
        ${welcomeMessage} <BR><BR>
        ${result}
        <form:form action="${pageContext.request.contextPath}/login.html" method="POST" modelAttribute="loginForm">
            <table>
                <tr>
                    <td colspan="2" align="center">Spring MVC Form Demo - Login</td>
                </tr>
                <tr>
                    <td>User Name</td>
                    <td><form:input path="username" /> <form:errors path="username"></form:errors></td>                 
                </tr>
                <tr>
                    <td>Password</td>
                    <td><form:password path="password" /> <form:errors path="password"></form:errors></td>
                </tr>
                <tr>
                    <td colspan="2" align="center"><input type="submit" value="Login" style="background-color:white;" /></td>
                </tr>                                   
            </table>                                        
        </form:form>
        <a href="${pageContext.request.contextPath}/welcome">Register if not already registered</a>
    </font>
</div> 
</body>
</html>

HelloController.java HelloController.java

package java4s;


import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.context.annotation.Scope;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import java4s.model.Login;

@Controller
public class LoginSuccessController {

    @Autowired
    EmployeeService emp_service;

    @RequestMapping(value = "/login", method=RequestMethod.POST)
    public ModelAndView loginvalidateForm(ModelMap model, @ModelAttribute("loginForm") Login login, BindingResult result, HttpSession session) {

        if(result.hasErrors()){
            model.addAttribute("result", "All Fields are neccessary");
            return new ModelAndView("index",model);
        }
        if(emp_service.validateLogin(login.getUsername(), login.getPassword()))
        {
            List<Employee> user_info = emp_service.getUserinfo(login.getUsername());
            session.setAttribute("session_username", login.getUsername()); //Add value to session variable
            model.addAttribute("result", "Login Success");
            model.addAttribute("user_info", user_info);
            return new ModelAndView("LoginSuccess",model);
        }
        else
        {
            model.addAttribute("result", "Login Failure");
            return new ModelAndView("index",model);     
        }
    }

}

Login.java Login.java

package java4s.model;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class Login {

    @NotNull
    @Size(min = 3, max = 20)
    private String username;

    @NotNull
    @Size(min = 3, max = 20)
    private String password;

    public String getUsername()
    {
        return username;
    }
    public void setUsername(String username)
    {
        this.username = username;
    }
    public String getPassword()
    {
        return password;
    }
    public void setPassword(String password)
    {
        this.password = password;
    }
}

I am trying to put validation on the login fields when they are empty, but errors are not showing on the index page the the login fields are empty. 我试图在登录字段为空时对其进行验证,但是在索引页面上没有显示登录字段为空的错误。 What is the problem in the code? 代码中有什么问题?

You have to add the annotation @Valid ( see the spring doc for more details) : 您必须添加注释@Valid(有关详细信息,请参阅spring doc ):

public ModelAndView loginvalidateForm(ModelMap model, @Valid @ModelAttribute("loginForm") Login login, BindingResult result, HttpSession session) {
....
}

Don't forget to enable “mvc:annotation-driven” to make Spring MVC supports @Valid annotation. 不要忘记启用“mvc:annotation-driven”以使Spring MVC支持@Valid注释。 Add the following tag to your application context XML file. 将以下标记添加到应用程序上下文XML文件中。

<mvc:annotation-driven />

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

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