2012-01-27 24 views
0

「p:calendar」コンポーネントがバインドされているJavaクラスタイプはどれですか? (コンバータを実装するため)。jsfコンバータp:カレンダーの日付

私はそれがjava.util.Dateだと思った、と私は、次のしている:

<p:calendar id="fecha" value="#{catalogoController.criterios.fecha}" 
      maxlength="10" 
      size="10" 
      locale="es" 
      pattern="dd/MM/yyyy" 
      navigator="true" 
      showOn="button" 
      showButtonPanel="true" /> 

とプロパティcatalogoController.criterios.fechajava.util.Dateです。

マイカスタムコンバータ:

@FacesConverter(forClass = java.util.Date.class) 
    public class FechaDateConverter implements Converter { 
    ... 
     public Object getAsObject(FacesContext context, UIComponent component, String value) { 
      log.info("getAsObject"); 
      ... 
     } 
    ... 
    } 

それは大ですので、私はここでメソッドのコードを入れてはいけません。条件をチェックし、カスタムプロパティファイル( "msjsConversion")から取得したカスタムfacesmessagesを使用してConverterExceptionをスローします。

しかし、動作しません。不正な日付(たとえば「01/032011」)を入力すると、私のgetAsObjectメソッドは起動されません(最初のログ行には決して届かないので、私は知っています)。そしてデフォルトの変換メッセージは、私のバンドル "msjsConversion"から取得したものではなく、facesmessageとして表示されます。

p:calendarがバインドされているJavaクラスがjava.util.Date(これは私のコンバータを宣言したクラス)ではないため、トリガーされない理由が考えられます。

だから、私はIDと私のコンバータを宣言した場合ことをチェックしました:それは作品

<f:converter converterId="fechaDateConverter" /> 

@FacesConverter("fechaDateConverter") 
public class FechaDateConverter implements Converter { 

と私はp:calendarコンポーネントでこれを置きます。

誰もがJavaクラスp:calendarを知っていますか?私はそのクラスのコンバータを宣言でき、converterIdを使わないようにするには?

ありがとうございます。

+0

は、なぜあなたは、p FOコンバータを必要としない...カレンダー:

これは、あなたがすべてのpに対して場合繰り返す必要があるという欠点を持っていますか?その簡単な日付http://www.primefaces.org/showcase/ui/calendarBasic.jsf < - Javaコードを見て... – Daniel

+0

私のコンバータは簡単な日付のためです(私の質問を参照してください)。しかし、任意の日付オブジェクト '@FacesConverter(forClass = java.util.Date.class)'に対して宣言すると動作しません。 ' 'を使用してコンポーネントを明示的に宣言すると動作します。 – choquero70

答えて

1

誰もがp:calendarのJavaクラスを知っていますか?

1つではないようです。

この回答はprimefaces 1.1に適用されることに注意してください。私はチェックしていないが、後のバージョンが異なる可能性があります。コンバータが指定されている場合

日までの文字列からの変換は、(あなたのPに:カレンダーがあなたのページで使用)org.primefaces.component.calendar.CalendarRenderer

のgetConvertedValue方法で行われることになります日付を変換し、発生する可能性のあるエラーを処理するために使用されます。コンバーターが指定されていない場合、メソッドは指定されたパターンを使用して日付を解析しようとします(パターンが指定されていない場合は、デフォルトのMM/dd/yyyyを使用します)。

0

id(例:converter = 'fechaDateConverter')かBean名(converter = '#{fechaDateConverter}'など)を指定して、コンバータを指定するには、コンバータのp:calendarを使用できます。カレンダー値:

関連する問題