2012-04-20 10 views
4

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

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(文字列)の値を持つ:土曜4月21日午前5時30分00秒IST 2012

JavaメソッドはSQL日に

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を使用しました。しかし、それはに変換されてしまった日には、次のとおりです。上に書いたconvertDateTimeタグ:土曜4月21日午前5時30分○○秒IST 2012年

  1. fの正しくないものです。
  2. もしそうでなければ、この文字列をどのようにsql日付に変換できますか?どのような形式を与えるべきか理解できません。

おかげで、 Shikha

+2

試し:すべてのconvertDateTimeとarticlePromo.startDateためにjava.util.Dateを使用します – Daniel

答えて

7

f:convertDateTime文字列オブジェクトに変換され、その逆もあります。 のオブジェクトは、java.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()); 
} 
8

startDateあなたはDateオブジェクトをフォーマットしたい場合は、のSimpleDateFormat使用することができ、またjava.util.Dateオブジェクト

ある

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

してみてください:

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