3

Wicket ページの次のコードで Wiquery DatePicker に問題があります (CompundPropertyModel を使用し、日付プロパティの型は java.util.Date です)。

DatePicker<Date> datePicker = new DatePicker<Date>("date"){
    @Override
    public boolean isVisible() {
        return selectedType.hasDate();
    }
};
datePicker.setDateFormat(DateUtil.DATE_PATTERN); // pattern is "dd.MM.yyyy"
form.add(datePicker);

これがバインドされている HTML:

<input wicket:id="date" id="date"/>

問題は、既存のデータを編集するときに、入力フィールドに日付とともに時間が表示され、フォームを送信するときに、これがパターンに適合しないために検証が失敗することです。

DatePicker に現在の値を正しく表示させるにはどうすればよいですか?

4

3 に答える 3

1

これは、比較的あいまいなWiqueryDatePickerコンポーネントのバグのようです。に切り替えましたが org.apache.wicket.extensions.yui.calendar.DatePicker、この問題はありません。

于 2011-11-04T09:37:25.957 に答える
1

コンポーネントDatePickeraTextFieldであるため、カスタムを使用してその でIConverterのみ返すのはなぜですか?dd.MM.yyyyconvertToObject

入力を変換するための登録済みまたはその他の方法でそのソースを閲覧するのを見ることができなかったIConverterので、これはおそらくこのコンポーネントで入力をフォーマットしているものと競合するでしょう。

アップデート

WiQuery 1.2.4 と Wicket 1.4.17 を使用してクイックスタートでこれをデバッグした後、DatePicker(であるTextField) の初期値が によって実行される標準の変換であることが示されComponent.getDefaultModelObjectAsString()ます。

TextFieldは があるため、クラスに登録されているものはIModel<Date>何でも使用します。あなたの場合、時間とともにフォーマットするカスタムを使用している可能性があります。をオーバーライドして、で指定された形式を尊重するa を使用してみます。IConverterDateIConverterDatePickergetConverter()SimpleDateFormatsetDateFormat()

IConverterこの問題は、 を一緒に指定する必要があるというヒントを提供しますDatePicker:問題 168: DatePicker の NL の無効な (または一般的でない) 日付形式

また、Wicket ユーザー リストの次の議論も役に立つかもしれません: DatePicker to pick a yearsetDateFormatJulien Roche (プロジェクトの所有者の 1 人) は、JQuery を使用するクライアント側でのみ機能すると述べています。

ウィケットテキストフィールドに適切なコンバーターを設定する必要があると思います(メソッドgetConverterのオーバーライドとクラスPatternDateConvertを使用)。「dateFormat」オプションは、jQuery を使用するクライアント側でのみ機能します。

于 2011-11-04T09:40:19.290 に答える
0

まず、https://cwiki.apache.org/WICKET/using-custom-converters.htmlをご覧ください。

次に、改札がオブジェクトをそのメカニックからのテキストに変換することを知っています。

ApplicationクラスのnewConverterLocator()メソッドをオーバーライドして、カスタムConverterLocatorを提供します。

protected IConverterLocator newConverterLocator() {
    ConverterLocator converterLocator = new ConverterLocator();
    converterLocator.set(Date.class, new DateConverter());
    return converterLocator;
}

ヒント:java.sql.Dateクラスコンバーターに注意してください

于 2011-11-09T23:13:45.593 に答える