如何从检票口 7 中的 IValidaable 获得标签



是否可以在验证中获取组件的标签?我需要此标签作为验证中的自定义错误消息。它看起来像:

"价值不得低于{0}。"

如果我的组件有一个标签,那么我想在像这样之前写它:

"标签名称:值不得小于 {0}。"

我的组件 BigDecimalValidator 不知道 BigDecimalTextfield

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

BigDecimalValidator 的可验证性无法达到必要的标签。

@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 的构造函数访问,但这不是一个好的解决方案。

您可以在

i18n 消息中使用{label},Wicket 会将其替换为表单组件的标签。

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

最新更新