Java Spring MVC绑定结果

Java Spring MVC绑定结果,java,spring,Java,Spring,bindingResult.hasError()结果为true,即使该字段不是空的或没有任何空格。我想知道我在这里错过了什么----------------------------------------------------------- 这是我的控制器 @RequestMapping(value = "/login",method = RequestMethod.POST) public ModelAndView login(@ModelAttribute("user")U

bindingResult.hasError()结果为true,即使该字段不是空的或没有任何空格。我想知道我在这里错过了什么-----------------------------------------------------------

这是我的控制器

@RequestMapping(value = "/login",method = RequestMethod.POST)
        public ModelAndView login(@ModelAttribute("user")User user, BindingResult bindingResult, 
                HttpServletRequest request, HttpServletResponse response, 
                @RequestParam("usernametxt") String username, @RequestParam("passwordtxt") String password) 
        {
            try 
            {
                // Using Spring ValidationUtils class to check for empty fields.
                // This will add the error if any in the bindingResult object.
                ValidationUtils.rejectIfEmptyOrWhitespace(bindingResult,"userName","usernametxt", "Username cannot be empty.");
                ValidationUtils.rejectIfEmptyOrWhitespace(bindingResult,"password","passwordtxt", "Password should not be empty");

                if (bindingResult.hasErrors())
                {

                    //returning the errors on same page if any errors..
                    return new ModelAndView("/LoginPage", "user", user);
                }
                else
                {

                    // If the user details is validated then redirecting the user to success page, 
                    // else returning the error message on login page.
                    ServiceFacade facade = new ServiceFacadeImpl();
                    List<User> userList = facade.getAllUsers();
                    for(int index = 0; index < userList.size(); index++){
                        String uname = userList.get(index).getUserName();
                        String pword = userList.get(index).getPassword();
                        if(username.equals(uname) && password.equals(pword))
                        {
                            request.getSession().setAttribute("user", user);
                            //Creating a redirection view to success page. This will redirect to UsersController
                            RedirectView redirectView = new RedirectView("success.do", true);
                            return new ModelAndView(redirectView);
                        }
                        else
                        {
                            bindingResult.addError(new ObjectError("Invalid", "Invalid credentials. " +
                                    "Username or Password is incorrect."));
                            //return new ModelAndView("login", "user", user);
                        }
                    }

                }
            } catch (Exception e) {
                System.out.println("Exception in LoginController "+e.getMessage());
                e.printStackTrace();
                return new ModelAndView("/LoginPage", "user", user);
            }
            return null;
        }

看起来好像混合了ModelAttribute和RequestParam。显示您的用户类。@请参见更新的问题。我已经包含了我的用户类如果您还没有,请您将bindingErrors打印到日志或控制台,并查看其中包含的内容,这应该表明问题所在。应该存在错误,因为fieldname不同,您在ValidationUtil中有
userName
,在用户模型中有
userName
。。
package com.nutsaboutcandywebproject.model;

import static javax.persistence.GenerationType.IDENTITY;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name = "users", catalog = "db_nutsaboutcandy")
public class User {

    private int userId;
    private String username;
    private String firstname;
    private String lastname;
    private String password;
    private String role;
    private String address;

    public User(){

    }


    public User(int userId, String username, String firstname,
            String lastname, String password, String role, String address) {
        super();
        this.userId = userId;
        this.username = username;
        this.firstname = firstname;
        this.lastname = lastname;
        this.password = password;
        this.role = role;
        this.address = address;
    }
    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "user_id", unique = true, nullable = false)
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }

    @Column(name = "username", nullable = false)
    public String getUserName() {
        return username;
    }
    public void setUserName(String username) {
        this.username = username;
    }

    @Column(name = "firstname", nullable = false)
    public String getFirstname() {
        return firstname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    @Column(name = "lastname", nullable = false)
    public String getLastname() {
        return lastname;
    }
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    @Column(name = "password", nullable = false)
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        if(password.length()>=6){
            this.password = password;
        }
        else{
            throw new IllegalArgumentException("Password length must be more than 6 characters");
        }
    }

    @Column(name = "user_role", nullable = false)
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }

    @Column(name = "address", nullable = false)
    public String getAddress() {
        return address;
    }

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

}