「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.fecha
はjava.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を使わないようにするには?
ありがとうございます。
は、なぜあなたは、p FOコンバータを必要としない...カレンダー:
これは、あなたがすべてのpに対して場合繰り返す必要があるという欠点を持っていますか?その簡単な日付http://www.primefaces.org/showcase/ui/calendarBasic.jsf < - Javaコードを見て... – Daniel
私のコンバータは簡単な日付のためです(私の質問を参照してください)。しかし、任意の日付オブジェクト '@FacesConverter(forClass = java.util.Date.class)'に対して宣言すると動作しません。 ' 'を使用してコンポーネントを明示的に宣言すると動作します。 –
choquero70