如果需要字段,JSF如何获取验证器信息?

时间:2015-11-05 11:08:24

标签: validation jsf

我的应用程序中遇到h:inputText问题。某些字段可能是必需的,有些不是,我想为所有thos字段制作自定义验证器,并且无法找到有关如何检查验证器类的信息是否需要UIComponent。

这是输入字段代码的样子:

<h:inputText styleClass="form-control"
         disabled="#{cc.attrs.bean.disableAnswerPosibility(cc.attrs.answer)}"
         value="#{cc.attrs.freeAnswer}"
         requiredMessage="#{msg.fieldRequired}"
         a:requiredForValidator="#{cc.attrs.question.optional}"
         required="#{cc.attrs.question.optional}">
    <f:validator validatorId="stringValidator"/>
</h:inputText>

正如您所看到的,我尝试将此信息作为直通参数传递。它在网页上呈现为真/假,但是当我尝试在验证器类中获取它时,它是某种对象,没有在网页源中显示的值,但是使用.xhtml文件中的代码。

这是代码:

Object temp = uiComponent.getPassThroughAttributes().get("requiredForValidator");

这就是我得到的:

enter image description here

我只需要值 - 布尔值或字符串。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

在验证器的验证方法中,您可以将组件强制转换为javax.faces.component.UIInput并评估其required属性。

    @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        UIInput inputComponent = (UIInput) component;
        if(inputComponent.isRequired()){

        }
    } 

此验证程序显然仅适用于UIInput组件。