2017-01-24 6 views
0

Ist es möglich, das Etikett meiner Komponente innerhalb einer Validierung zu bekommen? Ich brauche dieses Label für eine benutzerdefinierte Fehlermeldung in meiner Validierung. Es sieht so aus:Wie bekomme ich Label von IValidatable in Wicket 7

"Der Wert darf nicht kleiner als {0} sein."

Wenn meine Komponente ein Etikett hat dann will ich es vor wie schreiben:

„Labelname: Der Wert nicht weniger sein kann als {0}.“

Meine Komponente BigDecimalValidator kennt nicht die BigDecimalTextfield.

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

Die validierbares von BigDecimalValidator die notwendige Etikett nicht erreichen kann.

@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); 
    } 
} 

Ich weiß, dass das Etikett durch einen Konstruktor für BigDecimalValidator erreicht werden kann, aber das ist keine schöne Lösung.

Antwort

1

Sie können {label} in Ihrer i18n-Nachricht verwenden und Wicket wird sie durch die Bezeichnung der Formularkomponente ersetzen.

z. {label}: The value may not be less than {0}.

+0

Könnten Sie mich erinnern, diese Funktion hängt von der spezifischen Erstellung von Paar XxxxxTextField/Label? –

Verwandte Themen