1

我的表单中有 3 个文本框(用ids 表示 - A、B、C)。我已经在我的表单中关联f:validator validatorId="abc"到我的一个输入文本框(比如id- 'A')。

现在的问题是,我可以获取用户在我的验证器类中为文本框 B 和 C 输入的任何值吗?

另外,有什么方法可以在提交期间在我的验证器类中一次性对整个页面执行验证,而不是分别关联f:validator到每个组件?

4

1 回答 1

0

对于您的第二个问题我对此一无所知。[Ask BalusC ;)]
对于您的第一个问题
是的,您可以获得文本框 B 和 C 的值。为此,您必须将这些值作为文本属性传递框 A。请参见以下示例。文本框 A 中引入了两个属性,其他文本框的值已分配为这些属性的值。

<h:form>
  <h:inputText id="txtA">
    <f:validator validatorId="textValidator"/>
    <f:attribute name="attrib_textB" value="#{myBean.textB}"/>
    <f:attribute name="attrib_textC" value="#{myBean.textC}"/>
  </h:inputText>

  <h:inputText value="#{myBean.textB}">
    <a4j:support event="onchange"/>
  </h:inputText>

  <h:inputText value="#{myBean.textC}">
    <a4j:support event="onchange"/>
  </h:inputText>

  <a4j:commandButton value="Save"/>
</h:form>

现在在您的验证器类中,您可以像这样访问这些变量。

public void validate(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException {
    String textA = (String) arg2;//value of text box A
    String textB = (String) arg1.getAttributes().get("attrib_textB");//value of text box B
    String textC = (String) arg1.getAttributes().get("attrib_textC");//value of text box C
}

就这样。请注意,我的“ MyBean ”类具有用于textAtextB字符串字段的 getter 和 setter 方法。

于 2012-11-14T12:03:16.537 回答