【问题标题】:Spring ModelAttribute not biding values Tomcat 9, Spring 5 MVCSpring ModelAttribute 没有出价 Tomcat 9,Spring 5 MVC
【发布时间】:2019-05-08 11:40:28
【问题描述】:

我从 Spring 3 迁移到 5,升级到 Tomcat 9。升级后无法从 JSP 获取值到 Controller。 @ModelAttribute 在提交表单时不绑定在 JSP 中输入的值。

JSP 代码:

<form:form action="/login" modelAttribute="identity" id="loginForm" cssClass="clearfix nodisplay">

<div class="grouping text">
    <label for="email">E-mail Address</label>
    <form:input path="email" id="email" cssClass="regInput" cssErrorClass="error" />
    <form:errors path="email" cssClass="errors" />
</div>
<div class="grouping text">
    <label for="pwd">Password</label>
    <form:password path="pwd" id="pwd" cssClass="regInput" cssErrorClass="error" autocomplete="off" />
    <form:errors path="pwd" cssClass="errors" />
</div>
<div class="grouping remember">
    <input type="checkbox" name="remember" id="remember" />
    <label for="remember">Remember Me</label>
</div>
<div class="btns clearfix">
    <span class="login-btn">
        <input type="hidden" name="cookieExist" id="cookieExist" value="false" />
        <button type="button" name="login" class="btn js-login-btn"><span class="pictos">K</span> Login</button>
    </span>
    <span class="password-forget">
        <a href="/passwordreset">I forgot my password</a>
    </span>
</div>
</form:form>

控制器代码

 @Controller
 public class LoginController {

    @RequestMapping(method=RequestMethod.GET, value="/login")
    public String loginGet(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap,
                        @ModelAttribute Identity identity){

        // commented business logic code
        return "login";
    }


    @RequestMapping(method=RequestMethod.POST, value="/login")
    public String loginPost(HttpServletRequest request, HttpServletResponse response,
            ModelMap modelMap, @ModelAttribute("identity") Identity identity, BindingResult bindingResult) {
        //commented out business logic
        return "dashboard";
    }

    @ModelAttribute("identity")
    public Identity formBackingObject() {
        return new Identity();
    }
}

我没有使用 webxml 方式进行迁移,不确定我还缺少什么?

【问题讨论】:

  • 我使用 JS 函数提交“表单”,我在按钮中使用type="submit" 以及$(this).closest("form").submit(); 两种方式都存在问题!

标签: spring-mvc tomcat9


【解决方案1】:

form 标记中无需执行任何操作。在 form 标签中提及 method。所以改成:

<form:form modelAttribute="identity" method="post" id="loginForm" cssClass="clearfix nodisplay">

并将您的主要操作按钮更改为:

<input type="submit" ... />

【讨论】:

  • @Pruthviraj 你能展示你在模型中放置命令对象的代码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 2017-11-27
  • 2018-06-30
  • 2012-01-01
  • 1970-01-01
相关资源
最近更新 更多