Есть ли способ более элегантно манипулировать объектами Date в этом примере? - PullRequest
1 голос
/ 30 марта 2012

У меня есть проблема, когда я прошу пользователя ввести дату, для которой я использую 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 - это объект формы , который я получаю из-за моего метода контроллера и существует только для просмотра (т. Е. Когда появляются ошибки, поэтому он обновляется с предыдущей информацией), и, очевидно, это отправляет его обратно как объект Date также, поэтому мне нужно отформатировать его в 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 Ответ

1 голос
/ 31 марта 2012

Будет лучше, если вы отправите дату в виде строки или даже отметку времени.Вы можете использовать @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));
    }

Или вы можете получить параметр напрямую из запроса, используя getParameter () из HttpServletRequest объекта и выполнить проверку вручную.

...