LengthValidator不为非必填字段触发

时间:2013-11-25 17:27:17

标签: jsf jsf-2 primefaces validation

我通过JSF创建了一个DB驱动的表单。根据数据库值,字段可能是必填字段,并且可能具有最大字符数。这些要求彼此独立。字段可以是强制性的,没有最大长度,也可以不是强制性的,但仍具有最大长度。

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

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您在哪里添加验证器?

input.addValidator(new YourValidator());

添加此项,将始终触发验证。