根据下拉列表选择输入文本验证

sro*_*ock 2 validation jsf-2

如何根据下拉列表中的选项验证输入文本框?

Bal*_*usC 6

您可以将下拉列表的选定值作为输入组件的属性传递,以便验证程序可以抓取它.

例如

<h:selectOneMenu binding="#{menu}" value="#{bean.item}">
    <f:selectItems value="#{bean.items}" />
</h:selectOneMenu>
<h:inputText value="#{bean.input}">
    <f:attribute name="item" value="#{menu.value}" />
    <f:validator validatorId="inputValidator" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

@FacesValidator("inputValidator")
public class InputValidator implements Validator {

    @Override
    public void validate(FacesContext context, UIComponent component, Object value) {
        Object item = component.getAttributes().get("item");
        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)

请注意,组件的顺序很重要.JSF UIInput按照它们在视图中出现的顺序处理组件.如果下拉组件放置输入文本组件,然后你需要传递#{menu.submittedValue}的属性,但在这一点上的价值还没有被转换.如果需要,您可以使用<h:inputHidden>放在两个组件之后的解决方法并将验证器放在那里.