2017-01-24 5 views
0

検証の中で自分のコンポーネントのラベルを取得することは可能ですか?私は自分の検証でカスタムエラーメッセージのためにこのラベルが必要です。それは次のようになります。Wicket 7のIValidatableからラベルを取得する方法

"値は{0}より小さくないことがあります。"

私の成分が標識を持っている場合、私のような前にそれを書きたい:

「ラベル名:値はありません{0}未満とすることができます」

マイコンポーネントBigDecimalValidatorBigDecimalTextfieldを知りません。

tfiGV = new BigDecimalTextField("tfiGV", new Model<BigDecimal>()); 
tfiGV.setLabel(Model.of(Const_Labels.GV)); 
tfiGV.add(BigDecimalValidator.minimum(0)); 

BigDecimalValidatorのvalidatableは、必要なラベルに到達することはできません。

@Override 
public void validate(IValidatable<BigDecimal> validatable) { 
    // Doesn't work ((FormComponent<BigDecimal>) validatable).getLabel(); 

    if (((BigDecimal) validatable.getValue()).compareTo(BigDecimal.valueOf(minimum, 3)) == -1) { 
      ValidationError valError = new ValidationError(); 
      valError.setMessage(getErrorMessageMin(minimum)); 
      validatable.error(valError); 
    } 
} 

私はラベルがBigDecimalValidatorのコンストラクタによって達することができることを知っているが、これは素晴らしい解決策ではありません。

答えて

1

i18nメッセージで{label}を使用すると、Wicketはフォームコンポーネントのラベルに置き換えます。

など。 {label}: The value may not be less than {0}.

+0

この機能は、XxxxxTextField/Labelペアの特定の作成に依存していますか? –

関連する問題