<tr class="rowsAdded">
<td><input name="item" class="form-control" type="text" placeholder="Item" /></td>
<td><input name="amount" class="form-control" type="number" placeholder="Amount" /></td>
<td><input name="expenseDate" class="form-control" type="date"placeholder="ExpenseDate" /></td>
</tr>
下面是我的controller和Init Binder
@RequestMapping (value = "/saveExpenses", method=RequestMethod.POST)
public String saveExpenses (@RequestBody ExpenseDetailsListVO expenseDetailsListVO, Model model,BindingResult result) {
if (result.hasErrors()) {
System.out.println(result.getFieldError().getField().toString()+" error");
}
System.out.println(expenseDetailsListVO);
return "success";
}
@InitBinder
public void initBinder(WebDataBinder webDataBinder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
通过这种方式,我想要的日期格式不起作用,这就是我得到的输出 expenseDate=2015 年 3 月 18 日星期三 05:30:00 IST 但我想把它变成一种特定的格式,比如 yyyy-MM-dd ...建议我这样做的方法。
请您参考如下方法:
这不是更容易吗?
实体或表单支持对象:
class Foo {
/* handles data-binding (parsing) and display if spring form tld or spring:eval */
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private Date expenseDate;
...
}
在表单中:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<form:form modelAttribute="modelAttributeName">
<form:input type="date" path="expenseDate" />
</form:form>
或者只是为了显示:
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<spring:eval expression="modelAttributeName.expenseDate" />
一些迂腐的笔记:
- 将 CSS 用于布局,而不是表格。请参阅 Bootstrap 的网格系统。
- 使用Post-Redirect-Get形式的模式。
- 使用 Spring 的 Form 标签库进行适当的 HTML 转义和 CSRF 保护
- 在 Controller 处理程序方法中使用@Validated 进行验证
- 您在表单中的“占位符”之前缺少一个空格
请在此处查看我的帖子以获得最佳实践:Spring MVC: Validation, Post-Redirect-Get, Partial Updates, Optimistic Concurrency, Field Security




