我的应用程序中遇到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");
这就是我得到的:
我只需要值 - 布尔值或字符串。有什么建议吗?
答案 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
组件。