2013-11-25 11 views
0

我通过JSF创建了一个DB驱动窗体。根据DB值,一个字段可能是强制性的,并且可能有最大数量的字符。这些要求彼此独立。一个字段可以是强制性的,没有最大长度或者不是强制性的,但仍然具有最大长度。LengthValidator没有为非必需字段触发

HtmlInputTextarea input = new HtmlInputTextarea(); 
if(validation != null && validation != ""){ 
    LengthValidator lengthVal = new LengthValidator(); 
    lengthVal.setMaximum(Integer.parseInt(validation)); 
    input.setValidatorMessage("Please enter a valid number of characters"); 
    input.addValidator(lengthVal); 
} 

验证是允许的最大字符数。在日志中,我可以看到对于必要的字段,验证显示正确的值。但是当我提交表单时,lengthvalidator只会在我认为是强制性的字段上触发。以下是必填字段代码:

input.setRequired(true); 
input.setRequiredMessage("Please enter a value for this field."); 
input.setImmediate(true); 
HtmlMessage message = new HtmlMessage(); 
message.setFor(inputId); 
message.setStyleClass("errorMessage"); 
div.getChildren().add(input); 
div.getChildren().add(message); 

任何帮助表示赞赏。

回答

0

你在哪里添加验证器?

input.addValidator(new YourValidator()); 

添加此,验证将始终被激发。