Spring MVC 中双向数据绑定的概念

Concept of Two-Way data binding in Spring MVC

这是我的 login.jsp 文件。

<form:form method="POST" action="checklogin" modelAttribute="log">

        <form:label path="username">UserName: </form:label> 
        <form:input path="username" id="username" /><br /><br />
        <br /> 
        <form:label path="pswd">Password: </form:label>
          
         <form:password path="pswd" id="password" /><br /> <br />
        <br /> 
        <input type="submit" id="btnLogin" value=login class="login" />
</form:form>

这是我的控制器

@RequestMapping(value = "/checklogin", method=RequestMethod.POST)
    public String chklogin(@ModelAttribute Login login, Model mod) {    

        if (login.getUsername().equals("subro") && login.getpswd().equals("ss")) {
            mod.addAttribute("log",login);
            return "Home";
        }
        else {
            return "Login";
        }
    }

仍然出现错误 bean 名称 'log' 的 BindingResult 和普通目标对象都不能用作请求属性

改变

@ModelAttribute Login login

@ModelAttribute Login log

spring 中的双向数据绑定允许用户输入动态绑定到 bean。从某种意义上说,它是 two-way,它可以从 bean 获取输入,并且可以 post 用户使用 GET 和 POST api.[=13 输入到 bean =]

使用 @ModelAttribute 注释,您可以将用户输入与 bean 绑定。

@RequestMapping(value = "/login", method=RequestMethod.GET)
public String login(@ModelAttribute Login log){ //one-way binding
   return "Login";
}

@RequestMapping(value = "/checklogin", method=RequestMethod.POST)
public String chklogin(@ModelAttribute Login log, Model mod) {  //two-way binding

   if (login.getUsername().equals("subro") && login.getpswd().equals("ss")) {
       mod.addAttribute("log",login);
       return "Home";
   }
   else  return "Error";
        
}

之前没有写过映射到url/login的登录方法。

当您收到错误消息“bean 名称 'log' 的 BindingResult 或普通目标对象均不可用作为请求属性”时,这意味着 bean(在我的例子中为 'log')不可用可以绑定查看页