2016-06-01 3 views
1

レイアウトのチェックボックスがいくつかあります: "[*]タイプAのアイテム(数:2)"です。 このようなチェックボックスには、対応するチェックボックスに付されたリスト内の項目数を表示するリンクが付いています(上記のレイアウトでは「カウント:2」)。このリンクは、リストに項目を追加するための別のフォームを開きます。 ユーザーがこのようなチェックボックスをチェックすると、リンクが有効になり、アイテムを追加できます。しかし、チェックボックスをオンにして項目を追加しないと、フォームが送信されるときにエラーが表示されます。Wicket - 検証なしでajaxを使用してモデルを更新する

AjaxCheckboxを使用してリンクを有効/無効にしようとしましたが、チェックボックスにバリデーターを追加するまで(上記の条件を確認するまで)正常に機能しました。 問題は、チェックボックスからAjaxリクエストを送信したときにバリデータが呼び出され、リストに項目がないため検証が失敗します。

コンポーネントにバリデータを持ち、フォームを送信するときにのみ使用し、ajaxリクエストを送信しないときはWicketには方法がありますか?つまり、モデルを更新するだけのajaxです。

私はAjaxFormComponentUpdatingBehaviorサイクルで呼び出されないIFormValidatorを使用できますが、おそらく、私が避けたいフォームにチェックボックスがあるので、それらの多くを作成する必要があります。

PS:画像を提供していないのは申し訳ありません。私の開発マシンは隔離された安全なLANにあり、そこからファイルをコピーすることはできません。

+0

それは可能ですか?それは回答者があなたの質問のより良い詳細を得るのを助けるでしょう。 – RBT

+0

申し訳ありませんが、私はセキュリティ上の理由からそうすることができません – koszek

答えて

0

あなたは、全体のフォームが送信されたときにのみ呼び出されますフォームにIFormValidatorを追加することができます:あなたはUIのコードまたはスナップショットを投稿するため

public class ItemsValidator extends AbstractFormValidator 
{ 

    @Override 
    public FormComponent<?>[] getDependentFormComponents() 
    { 
    return new FormComponent[]{checkbox}; 
    } 

    @Override 
    public void validate(Form<?> form) 
    { 
    if (checkbox.getConvertedInput() && items.isEmpty()) 
    { 
     error(checkbox); 
    } 
    } 
} 
+0

ありがとうございます、それはうまくいくはずですが、私はこれらのチェックを関連するコンポーネント内に保ち、私はあなたのバリデーションで使用されるリクエストサイクルでフラグを設定することをお勧めします[あなたの答え](http://stackoverflow.com/a/23974530/6399437)が見つかりました。私は解決策がすべきだと思います。 – koszek

+0

FormComponentPanelのチェックボックスを囲むことも別の方法です。フォームの送信中にチェックボックスとアイテムの組み合わせを検証できます。 – svenmeier

+0

申し訳ありませんが、FormComponentPanelが私のajaxの問題にどのように役立つのでしょうか?少し詳しく説明できますか? – koszek

関連する問題