0

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:validateRegexpattern="" で表される静的フォーム) を動的に追加するにはどうすればよいですか? 関連するインターフェースはありますか?

4

1 に答える 1

0

JAVA SCRIPT最適な使用のために、JSFで検証も実装しました。

コード (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 バリデータの詳細参照用リンク

于 2013-07-03T13:44:38.137 に答える