我有一个实现 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 passnull
values to theIValidator#validate(IValidatable)
method.
这是设计好的,您应该改为实现 INullAcceptingValidator
。
关于java - Wicket - IValidator 在 TextField 为空时不调用验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354305/