フォームコンポーネントの検証が失敗したときにテキストフィールドを誤って作成しようとしています。 テキストフィールドのクラス属性に「エラー」値を追加して、それを赤にします。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、 公園
あなたは 'onValidate()は' 3回呼び出される理由を確認するためにデバッガを使用して、コードをステップ実行でき – rotsch