基于下拉列表选择的输入文本验证

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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。你摇滚!

以上是关于基于下拉列表选择的输入文本验证的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 验证下拉菜单和文本输入

如何从下拉列表中选择并输入文本

下拉列表实现模糊匹配选择

从文本字段复制值以选择下拉列表[重复]

如何验证下拉列表中的“其他”选项?

关于EasyUI ComboBox(下拉列表框)能否直接输入文本的问题,详情如图所示。