2012-09-10 20 views
1

我有一個類實現了IValidator。我將此驗證程序類添加到我的TextField,並調用了重寫方法validate(Invalidatable<T>)。但是,如果TextField爲空,則不會調用該方法,並且不會發生驗證。這是爲什麼發生?這是預期的行爲?Wicket-IValidator在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); 
     } 
    } 

實例化文本字段

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

設置文本字段屬性

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

然後我將TextField添加到窗體。

回答

8

IValidator的JavaDoc:表示驗證器可以驗證一個IValidatable對象

接口。

除非驗證實現INullAcceptingValidator接口,以及, 檢票不會通過null值給IValidator#validate(IValidatable)方法。

它是按照設計,你應該實施INullAcceptingValidator來代替。

+0

非常感謝。我應該多讀些文檔,對不起:S –