【问题标题】:Wicket - IValidator not calling validate when TextField is emptyWicket - 当 TextField 为空时,IValidator 不调用验证
【发布时间】:2012-09-03 11:22:43
【问题描述】:

我有一个实现IValidator 的类。我将此验证器类添加到我的TextField,并调用了覆盖的方法validate(Invalidatable<T>)。但是,如果TextField 为空,则不会调用该方法,并且不会进行验证。为什么会这样?这是预期的行为吗?

验证器类

public class CorporateNameValidator implements IValidator<String> {

        private static final String ERROR_EMPTY = "Error";

        @Override
        public void validate(IValidatable<String> validatable) {

            //Method not called when TextField has blank value.

            final String name = validatable.getValue();

            info("NAME: " + name);
        }
    }

实例化文本字段

corporateNameInput = new TextField&lt;String&gt;(CORPORATE_NAME_INPUT_ID, new PropertyModel&lt;String&gt;(this, ""));

设置文本字段属性

corporateNameInput.add(new CorporateNameValidator()); corporateNameInput.setOutputMarkupPlaceholderTag(true);

然后我将 TextField 添加到表单中。

【问题讨论】:

    标签: java forms validation wicket


    【解决方案1】:

    来自IValidator的JavaDoc:

    表示可以验证IValidatable 对象的验证器的接口。

    除非验证器也实现了INullAcceptingValidator 接口,否则 Wicket 不会将 null 值传递给 IValidator#validate(IValidatable) 方法。

    按照设计,你应该实现INullAcceptingValidator

    【讨论】:

    • 非常感谢。我应该更加注意阅读文档,抱歉:S
    猜你喜欢
    • 2020-03-10
    • 2022-01-07
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2023-01-21
    • 1970-01-01
    相关资源
    最近更新 更多