【问题标题】:What is the purpose of init binder in spring MVCSpring MVC中init binder的目的是什么
【发布时间】:2011-07-09 20:09:15
【问题描述】:

这是互联网上用于初始化活页夹的代码

@InitBinder
public void initBinder(WebDataBinder binder) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

谁能解释一下:

1) 为什么使用它,我的意思是,之前的问题是什么,如何使用该功能解决它。所以我想知道用这种日期格式解决的原始日期有什么问题?

2)从JSP表单的角度来看,这个格式怎么用,我的意思是,如果我们以文本格式输入日期,是不是转换成特定的格式再保存呢?

3) 它是如何应用这种格式的,我的意思是,我们是否必须在对象类中做一些事情?

【问题讨论】:

    标签: java binding spring-mvc


    【解决方案1】:

    1) 之前,您不得不求助于手动解析日期:

     public void webmethod(@RequestParam("date") String strDate) {
        Date date = ... // manually parse the date
     }
    

    现在可以直接获取解析后的日期了:

     public void webmethod(@RequestParam("date") Date date) {
     }
    

    2) 如果您的jsp 页面在yyyy-MM-dd 表单上提供日期,您可以直接在控制器中将其作为Date 对象检索。

    3) Spring 对所有注册的编辑器进行尝试,以查看是否可以将值转换为对象。您不必对对象本身做任何事情,这就是它的美妙之处。

    【讨论】:

    • 感谢回复,有没有在控制器和jsp页面中显示其工作形式的示例
    • @Pasha,真的没什么。尝试向您的控制器发送 HTTP 请求,例如,/path/name?date=2011-01-01(假设您的控制器和映射设置正确)。你也可以看看this pastebin我曾经写的代码的摘录。
    猜你喜欢
    • 2018-05-09
    • 1970-01-01
    • 2018-12-27
    • 2019-10-13
    • 2019-11-14
    • 1970-01-01
    • 2016-12-18
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多