【发布时间】: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