4

Primefacesのカレンダーコンポーネントを使用しています。VOに対応する文字列があります。データベースに保存しているときに、文字列をjava.sql.dateに変換する必要があります。

xhtml

<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>

startDate(文字列)の値は次のとおりです。SatApr 21 05:30:00 IST 2012

SQL日付を取得するJavaメソッド

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;
}

カレンダーのjava.util.dateを変換するときに、パターンdd / MM/yyyyを使用しました。ただし、変換された日付は次のとおりです。Sat Apr 21 05:30:00IST2012。

  1. 上記のf:convertDateTimeタグに問題がありますか。
  2. そうでない場合、この文字列をSQL日付に変換するにはどうすればよいですか。どのフォーマットを与えるべきか理解できません。

ありがとう、シカ

4

2 に答える 2

9

試す

<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);
于 2012-04-20T10:53:53.053 に答える
7

のみがStringからObjectに、またはその逆にf:convertDateTime変換されます。のオブジェクトは (属性)である必要があります。文字列は、ブラウザに表示されるフォーマットされた日付です!p:calendarjava.util.Datevalue

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());
}
于 2012-04-20T11:28:10.203 に答える