2011-12-20 11 views
1

フォームコンポーネントの検証が失敗したときにテキストフィールドを誤って作成しようとしています。 テキストフィールドのクラス属性に「エラー」値を追加して、それを赤にします。wicket検証の間違ったフィールド

フォームのonValidate()メソッドをオーバーライドし、コンポーネントにエラーがあるかどうかを調べることによって、これを行います。

@Override 
    protected void onValidate() { 
     super.onValidate(); 
     Iterator<Component> compIter = iterator(); 
     while(compIter.hasNext()) { 
      final Component comp = compIter.next(); 
      if(comp instanceof AbstractTextComponent<?>) { 
       comp.add(new AttributeAppender("class", new Model<String>() { 
        @Override 
        public String getObject() { 
         return (comp.hasErrorMessage())?"error":""; 
        } 
       }, " ")); 
      } 
     } 
    } 

これは動作しますが、私は、生成されたHTMLを見ると:

<input id="user_username" class="normal error error error" type="text" name="user.userName" value="stijn" maxlength="25" wicket:id="user.userName"> 

それはエラー値を3回発生。 私は何が間違っていますか?

これは、ウィケットでこれを達成するための最良の方法ですか、それとも良い方法ですか?それが3回 "エラー" を印刷し、なぜ私にはわからない

THX、 公園

+1

あなたは 'onValidate()は' 3回呼び出される理由を確認するためにデバッガを使用して、コードをステップ実行でき – rotsch

答えて

1

。あなた自身のツールを書く代わりに、このツールを使うことができます。 https://cwiki.apache.org/WICKET/automatic-styling-of-form-errors.html

+0

このプレゼンテーション「フォームが風にアレンジした」もありますhttp://code.google.com/p/ londonwicket/downloads/detail?name = LondonWicket-FormsWithFlair.pdf&can = 2&q = – bert

関連する問題