java - Wicket - IValidator 在 TextField 为空时不调用验证

标签 java forms validation wicket

我有一个实现 IValidator 的类.我将这个 validator 类添加到我的 TextField ,以及覆盖的方法 validate(Invalidatable<T>)叫做。但是,如果 TextField为空,不调用该方法,也不进行验证。为什么会这样?这是预期的行为吗?

validator 类

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

实例化 TextField

corporateNameInput = new TextField<String>(CORPORATE_NAME_INPUT_ID, new PropertyModel<String>(this, ""));

设置文本字段属性

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

然后我将 TextField 添加到表单。

最佳答案

来自 IValidator 的 JavaDoc:

Interface representing a validator that can validate an IValidatable object.

Unless the validator implements the INullAcceptingValidator interface as well, Wicket will not pass null values to the IValidator#validate(IValidatable) method.

这是设计好的,您应该改为实现 INullAcceptingValidator

关于java - Wicket - IValidator 在 TextField 为空时不调用验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354305/

相关文章:

Java 8 Lambda : Two Interface with method have same number parameter

Java套接字超时问题导致打开文件过多

ruby-on-rails - 使用其他模型的数据在 Rails 中填写表单时如何发送参数

javascript - 从我的网页发送电子邮件时出错

php - 使用 Curl 登录网站,转到链接,再次提交表单并获取输出

java - 如何读取同一节点下多种数据类型的firebase数据库?

java - 找不到jdk

jQuery “data” 属性未经过 W3C 验证

validation - Yii2:如何仅在规则中使用整数

iphone - Xcode 验证错误 : Unexpected value for key: CFBundleIconFile is not a string