Spring 中 Date 类型数据绑定的问题

holy_phoenix 2007-10-05 01:31:35
我现在遇到的问题是,在两个输入框分别输入 2007-10-01 和 2007-10-04,提交表单后打印出来的 log 显示正常,command 中的数据被正常转换为 java.util.Date 类型。但是 controller 在回返 JSP 页面之后,begin 和 end 两个输入框中的数据就变成了 Mon Oct 01 00:00:00 CST 2007 和 Mon Oct 04 00:00:00 CST 2007 这样的格式,似乎并没有经过 DateFormat 的处理。

JSP 代码:

1. <tr>
2. <td>时间(YYYY-MM-DD):</td>
3. <td><form:input path="begin" /><form:errors path="begin" /> <form:input
4. path="end" /><form:errors path="end" /></td>
5. </tr>


Java 代码:
   1. @Override  
2. protected void initBinder(HttpServletRequest request,
3. ServletRequestDataBinder binder) throws Exception {
4. DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
5. df.setLenient(false);
6. binder.registerCustomEditor(Date.class, null, new CustomDateEditor(df,
7. true));
8. }


表单中的 begin 和 end 分别指起、止时间,没有额外添加 validator 验证数据。

我百试不得其解,好不容易在网上找到几个相关的内容,都说得不是很详细,未能明白如何解决。烦请各位指点,不胜感激!
...全文
407 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
llxiong 2007-10-09
  • 打赏
  • 举报
回复
使用下面的方法在jsp页面中的返回日期进行一次转换
public static String getFormatDateString(final Date date) {
SimpleDateFormat smdf = new SimpleDateFormat("yyyy-MM-dd");
if(date == null) return "";
else return smdf.format(date);
}
zouzhiqiangzzq 2007-10-08
  • 打赏
  • 举报
回复
学习中
koj5201314 2007-10-08
  • 打赏
  • 举报
回复
5. df.setLenient(false);
6. binder.registerCustomEditor(Date.class, null, new CustomDateEditor(df,
7. true));

这2个是啥东东
holy_phoenix 2007-10-07
  • 打赏
  • 举报
回复
但是这样做的话,似乎是说 initBinder 中使用的 binder 所注册的 PropertyEditor 只对请求来时的数据进行了处理,但是在将数据返回给视图时却怠工了。不知道是否有更好或者更正确的方法。
holy_phoenix 2007-10-07
  • 打赏
  • 举报
回复
我现在采用的方法是在 controller 的处理方法中声明一个 DataBinder 和 request 再次绑定,取出该 binder 中的 model map,将自己需要返回的数据添加到 map 中,再将 model 返回给视图。代码类似如下:

DataBinder binder = createBinder(request, command);
binder.registerCustomEditor(Date.class, dateEditor);

Map<String, Object> model = binder.getBindingResult().getModel();
model.put("result", result);

return new ModelAndView("/listView", model);
zysmiracle 2007-10-06
  • 打赏
  • 举报
回复

试试, 先用SimpleDateFormat格式化

String datetime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE).format(new java.util.Date());

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧