我使用的是Spring MVC,当一个表单的ModelAttribute包含Date
字段时,我在提交该表单时遇到问题。当我发布帖子时,我的ApacheTomcat日志会给出以下警告,但没有堆栈跟踪:
WARN 2017-10-12 11:51:05,574 [http-nio-8080-exec-7] org.springframework.web.servlet.PageNotFound - Request method 'POST' not supported
我的@PostMapping
控制器方法甚至从未被调用过。问题是,当我将字段从Date
更改为String
时,POST请求将继续进行,而不会有任何进一步的更改。
我的Form类:
public class MyForm {
private Date myDate;
// Other unrelated fields
// getters + setters
}
我的JSp:
<form:form method="POST" action="/new/MyForm" modelAttribute="myForm">
// Unrelated inputs
<form:label path="myDate">Follow-up date</form:label>
<form:input path="myDate" type="date"/>
<input type="submit" name="complete" value="Submit"/>
</form:form>
我的控制器:
@InitBinder
public void dataBinding(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
CustomDateEditor dateEditor = new CustomDateEditor(dateFormat, true);
binder.registerCustomEditor(Date.class, dateEditor);
}
@PostMapping(value="new/MyForm", params="complete")
public ModelAndView submitMyForm(@ModelAttribute("myForm") MyForm form,
BindingResult result) {
if (result.hasErrors()) {
return new ModelAndView("myURL");
}
return this.saveAndRedirect(form);
}
如果我完全从JSP中取出日期输入,则所有内容都会按预期完成并提交。如果我在Form类中将Date
类型更改为String
,表单将再次提交(但我每次都需要在使用Date存储数据库的每个控制器中手动将字符串转换为日期,反之亦然,以显示检索到的日期)。
我做错了什么?
2条答案
按热度按时间qvk1mo1f1#
试着去改变
至
我们不应该把日期和标签捆绑在一起
如果管用,请让我知道
ffscu2ro2#