有没有办法在这个例子中更优雅地操作Date对象?

时间:2012-03-30 16:43:07

标签: java spring java-ee spring-mvc jstl

我有这个问题,我要求用户输入一个日期我正在使用JQueryUI,它将其格式化为MM / dd / yyyy字符串。但是,我的表单对象接受日期,所以我希望能够通过表单将此字符串作为日期发送。

<input type="text" class="points datepicker" name="evaluationYear2"
                           value="${nomination.evaluationYear2}"
                           <c:if test="${mode==cons.READ_ONLY}">disabled</c:if> />

我需要发送evaluationYear2作为Date对象(而不是字符串)。我怎样才能做到这一点?此外nomination是一个表单对象我收到的是由于我的控制器方法而且只是为了审核(即当错误显示所以它刷新以前的信息)并且显然这发送它也作为日期对象返回,所以我需要格式化为MM / dd / yyyy。

我试过这个没有用,显然是因为编码没有任何意义:

<input type="text" class="points datepicker" name="evaluationYear2t"
                           value="${nomination.evaluationYear2}"
                           <c:if test="${mode==cons.READ_ONLY}">disabled</c:if> />

 <fmt:parseDate var="evaluationYear2" value="${evaluationYear2t}" type="DATE" pattern="MM/dd/yyyy"/>

1 个答案:

答案 0 :(得分:1)

如果您将Date作为字符串发送,甚至是时间戳,那将是最好的。 您可以在此处使用@InitBinder

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

或者,您可以使用HttpServletRequest对象中的getParameter()直接从请求获取参数,并手动进行验证。