Spring MVC错误验证错误

时间:2016-02-03 09:19:33

标签: java spring jsp spring-mvc

的index.jsp

Gemfile

HelloController.java

<%@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>

Login.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);     
        }
    }

}

我试图在登录字段为空时对其进行验证,但是在索引页面上没有显示登录字段为空的错误。代码中有什么问题?

2 个答案:

答案 0 :(得分:2)

您必须添加注释@Valid(有关详细信息,请参阅spring doc):

var Demo = function () {
  var privateFunction = function () {
    console.log('private');
  };

  this.publicMethod = function () {
    console.log('public');
  };

  this.publicMethodToCallPrivateFunction = function () {
    privateFunction();
  };
}

Demo.prototype.tryCallingPublicMethod = function () {
  this.publicMethod();
};

Demo.prototype.tryCallingPrivateFunction = function () {
  privateFunction();
};

var demo = new Demo();
demo.publicMethod(); // works
demo.publicMethodToCallPrivateFunction(); // works
demo.tryCallingPublicMethod(); // works
demo.tryCallingPrivateFunction(); // fails

答案 1 :(得分:1)

不要忘记启用“mvc:annotation-driven”以使Spring MVC支持@Valid注释。 将以下标记添加到应用程序上下文XML文件中。

<mvc:annotation-driven />