如何检查Wicket Textfield中的空值?

And*_*den 5 java wicket

我有一个包含整数值的Wicket Textfield

currentValueTextField = new TextField<IntParameter>("valueText", new PropertyModel<IntParameter>(model, "value"));
Run Code Online (Sandbox Code Playgroud)

我正在附加一个自定义验证器,如下所示

currentValueTextField.add(new IntegerValidator());
Run Code Online (Sandbox Code Playgroud)

验证器类是

class IntegerValidator extends AbstractValidator<IntParameter> {

private static final long serialVersionUID = 5899174401360212883L;

public IntegerValidator() {
}

@Override
public void onValidate(IValidatable<IntParameter> validatable) {
    ValidationError error = new ValidationError();
    if (model.getValue() == null) {
        AttributeAppender redOutline = new AttributeAppender("style", new Model<String>("border-style:solid; border-color:#f86b5c; border-width: 3px"), ";");
        currentValueTextField.add(redOutline);
        currentValueTextField.getParent().getParent().add(redOutline);
        validatable.error(error);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我在文本字段中没有输入任何内容,onValidate()则不会调用我的方法.

在这种情况下,检查空值的推荐方法是什么?我还想对输入的值进行范围检查.

jor*_*deu 3

覆盖默认validateOnNullValue()情况false

@Override
public boolean validateOnNullValue()
{
     return true;
}
Run Code Online (Sandbox Code Playgroud)

这是方法的描述validateOnNullValue()

指示是否验证该值(如果是)null。如果值为 ,通常需要跳过验证null,除非我们想确保该值确实是null(一种罕见的用例)。扩展此方法并希望确保该值的验证器null应该覆盖此方法并返回 true

  • 评论指出,现在您希望在大多数情况下直接使用 IValidator,并在 Wicket 6 中针对这种情况使用 INullAcceptingValidator。 (2认同)