Проблема с форматом Struts 2 jQuery Datepicker

У меня есть объект user, который получает даты из формы Struts 2 с использованием плагина jQuery для datepickers, и всякий раз, когда я меняю формат даты с mm/dd/yyy/ на mm/yyyy, он больше не устанавливает дату правильно, даже если пользователю все еще нужно выбрать month/day/year по по умолчанию с календарем.

Итак, мой вопрос: есть ли обходной путь для этого или способ изменить способ передачи данных из формы в сущность, чтобы это работало?

Выдержка из формы:

<tr>
  <td style="border: 0px;">Contract Start-1</td>
  <td style="border: 0px;">
    <sj:datepicker name="user.nat_gas_start1" displayFormat="mm/dd/yy" yearRange="20011:2020" value="currentUser.nat_gas_start1"/>
  </td>
</tr>
<tr>
  <td style="border: 0px;">Month Shopping For-1</td>
  <td style="border: 0px;">
    <sj:datepicker name="user.nat_gas_end1" displayFormat="mm/yy" yearRange="20011:2020" value="currentUser.nat_gas_end1"/>
  </td>
</tr>

Выдержка из сущности (даты указаны в Java SQL):

public void setNat_gas_start3(Date nat_gas_start3) {
    this.nat_gas_start3 = nat_gas_start3;
}

public Date getNat_gas_end1() {
    return nat_gas_end1;
}

Форма выполняет и действие, которое перезаписывает существующие значения и передает их в базу данных через Hibernate. Раньше он работал, пока я не переключил формат даты окончания на формат mm/yyyy.


person gcalex5    schedule 13.07.2013    source источник
comment
Если дата конвертируется неправильно, используйте пользовательский конвертер.   -  person Aleksandr M    schedule 13.07.2013
comment
это то, что я думаю, что мне, возможно, придется сделать, но я пытался избежать необходимости делать это.   -  person gcalex5    schedule 14.07.2013


Ответы (1)


Не следует переключать формат даты, формат даты 'мм/гггг' обрабатывается некорректно, в результате чего в действие преобразуется неправильное значение даты. Вот примеры правильных форматов даты:

<sj:datepicker value="today" id="date3" name="date3" displayFormat="dd.mm.yy" label="Today" />
<sj:datepicker value="yesterday" id="date4" name="date4" displayFormat="mm/dd/yy" label="Yesterday" />
<sj:datepicker value="tomorrow" id="date5" name="date5" displayFormat="DD, d MM yy" label="Tomorrow" />
<sj:datepicker value="2004-08-14" id="date6" name="date6" displayFormat="d M, yy" label="String Value" />
person Roman C    schedule 13.07.2013
comment
Есть ли способ, чтобы дата отображалась как «мм/гггг» после выбора, но при этом правильно вставлялась без необходимости писать собственный конвертер? - person gcalex5; 14.07.2013
comment
Напишите установщик строк и проанализируйте строку даты вручную, но с таким форматом вы пропустили день. - person Roman C; 14.07.2013
comment
это то, что я собираюсь сделать в конечном итоге, я просто прочитаю его как строку, а затем проанализирую ее на дату и просто установлю день на 1, потому что для этого действительно не имеет значения, какой день месяца у меня есть . - person gcalex5; 14.07.2013