【发布时间】:2012-01-06 00:39:04
【问题描述】:
如何根据下拉列表中的选择来验证输入文本框?
【问题讨论】:
标签: validation jsf-2
如何根据下拉列表中的选择来验证输入文本框?
【问题讨论】:
标签: validation jsf-2
您可以将下拉列表的选定值作为输入组件的属性传递,以便验证器可以抓取它。
例如
<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} 作为属性传递,但此时该值尚未转换。如有必要,您可以使用 <h:inputHidden> 解决方法,将其放在两个组件之后并将验证器放入其中。
【讨论】: