【问题标题】:Input text validation based on drop-down list selection基于下拉列表选择的输入文本验证
【发布时间】:2012-01-06 00:39:04
【问题描述】:

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

【问题讨论】:

    标签: validation jsf-2


    【解决方案1】:

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

    例如

    <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>
    

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

    请注意,组件的顺序很重要。 JSF 按照它们在视图中出现的顺序处理UIInput 组件。如果下拉组件放置在输入文本组件之后,那么您需要将#{menu.submittedValue} 作为属性传递,但此时该值尚未转换。如有必要,您可以使用 &lt;h:inputHidden&gt; 解决方法,将其放在两个组件之后并将验证器放入其中。

    【讨论】:

    • 谢谢,BalusC。有效!!希望我能为您的解决方案做+50。你摇滚!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    相关资源
    最近更新 更多