我正在使用javax.faces.component
动态构建我的JSF表单,如:
...
} else if ((formFields.get(i).getFieldType().equals("Numeric"))) {
HtmlInputText input = (HtmlInputText)application.createComponent(HtmlInputText.COMPONENT_TYPE);
input.setId("G000"+i);
input.setValueExpression("value", FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(FacesContext.getCurrentInstance().getELContext(), "#{reviewReportBean.cRReviewerFormDataList["+i+"].fieldData}" , String.class));
input.setDisabled(checkTaskStatus(taskId));
//input.addValidator(numericValidator);
dynamicPanelGrid.getChildren().add(input);
...
我想添加&动态地为inputText字段实现数字验证器。我不知道如何实施?
例如,如果我尝试使用正则表达式进行验证,我如何动态地添加相关组件(例如,以f:validateRegex
pattern =“”表示的静态表单)?有没有相关的界面?
答案 0 :(得分:0)
为了最好的使用,我还通过JSF中的JAVA SCRIPT
实现了验证,
代码(JAVASCRIPT验证):
htmlInputTextObj.setMaxlength(8);
htmlInputTextObj.setOnkeypress("javascript:return limitinput(event, '0123456789', true);");
htmlInputTextObj.setOnfocus("javascript:return clearThisField(this);");
htmlInputTextObj.setOnblur("javascript:return loadDefaultValue(this);");
代码(JAVA验证)
final LengthValidator validator =
(LengthValidator)getApplication().createValidator(LengthValidator.VALIDATOR_ID);
if (question.getMinLength() > 0)
validator.setMinimum(question.getMinLength());
if (question.getMaxLength() > 0)
validator.setMaximum(question.getMaxLength());
htmlInputText.addValidator(validator);
JAVA验证器更多参考使用link