【问题标题】:JSTL - How to parse input dateJSTL - 如何解析输入日期
【发布时间】:2012-09-12 00:39:03
【问题描述】:

我的 jsp 中有一个日期输入字段,如下所示:

<form:input name="inputDate" id="inputDate" value="" path="date"/>

此表单映射到@ModelAttribute account,其日期定义如下:

private java.util.Date date ;

当我提交表单时,我收到一条错误消息(当然):

无法将 java.lang.String 类型的属性值转换为必需的 输入 java.util.Date ...

请提出一种我可以在JSP本身中解析date的方法,以便@ModelAttribute可以直接设置date字段的值

【问题讨论】:

    标签: java jsp spring-mvc jstl


    【解决方案1】:

    就像这个例子中的register binder in your @Controller

    @Controller
    public class MyFormController {
    
      @InitBinder
      public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class,
            new CustomDateEditor(dateFormat, false));
      }
    
      // ...
    }
    

    【讨论】:

    • 这确实有帮助,@xaerxess。谢谢
    • 你能帮我进一步吗?绑定对我来说工作正常,但是当输入字段中有不可解析的日期时,它会抛出这个异常:Could not parse date: Unparseable date: <my_date> 这直接输入到BindingResult,所以它出现在jsp中。我不希望用户看到这个错误。如何发出自定义错误?
    • 如果用户输入了无效的日期字符串,你想怎么办?
    • 我想展示一个更容易理解的错误。说,“你输入了一个无效的日期”,而不是一些 java 异常。
    • 只需将typeMismatch.java.util.Date = You entered an invalid date (date format should be yyyy-mm-dd) 添加到您的消息中。
    猜你喜欢
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多