Primefaces Календарь компонента и преобразования даты

Я использую простые лица & apos; календарный компонент. У меня есть соответствующая строка в VO. Сохраняя в базе данных, мне нужно преобразовать строку в java.sql.date.

xhtml:

<code><p:calendar value="#{articlePromo.startDate}"
    id="vendorStartDateInputTxt" pattern="dd/MM/yyyy" mode="popup" showOn="button">
    <f:convertDateTime type="date"  dateStyle="short" pattern="dd/MM/yyyy" />
</p:calendar>
</code>

StartDate (String) имеет значение: сб 21 апреля 05:30:00 IST 2012

Java method to get sql Date

<code>public static Date getSQLDate(String strDate) {
    java.sql.Date sqlDate = null;
    try {
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        java.util.Date dt = formatter.parse(strDate);
        sqlDate = new java.sql.Date(dt.getTime());
    } catch (Exception e) {
        e.printStackTrace();
    }

    return sqlDate;
}
</code>

При преобразовании календаря java.util.date я использовал шаблон dd / MM / yyyy. Но дата, в которую он был преобразован: суббота 21 апреля 05:30:00 IST 2012.

Is anything incorrect with f:convertDateTime tag written above. If not, how can I convert this string to sql date. Not able to understand what format should be given.

Спасибо, Shikha

 Daniel20 апр. 2012 г., 12:49
попробуйте вообще без & lt; f: convertDateTime и используйте java.util.Date для articlePromo.startDate

Ответы на вопрос(2)

Решение Вопроса

f:convertDateTime только новообращенныеString вObject и наоборот.Object дляp:calendar должен бытьjava.util.Date (этоvalue атрибуты).String это форматированная дата, которую вы видите в браузере!

Календарь Primefaces автоматически присоединяет конвертер. Вот почему у вас естьpattern приписыватьp:calendar.

Так что вы должны удалить свой дополнительныйf:convertDateTime как уже предложено Даниилом.

Тогда преобразование изjava.util.Date вjava.sql.Date это довольно просто:

public java.sql.Date sqlDate(java.util.Date calendarDate) {
  return new java.sql.Date(calendarDate.getTime());
}

<p:calendar value="#{articlePromo.startDate}"
    id="vendorStartDateInputTxt" pattern="dd/MM/yyyy" mode="popup" showOn="button">
</p:calendar>

гдеstartDate являетсяjava.util.Date объект

Кроме того, если вы хотите отформатировать объект Date, вы можете использовать SimpleDateFormat:

DateFormat df=new SimpleDateFormat("dd/MM/yyyy");
String s=df.format(startDate);

Ваш ответ на вопрос