2
如何根據下拉列表中的選擇驗證輸入文本框?基於下拉列表選擇的輸入文本驗證
如何根據下拉列表中的選擇驗證輸入文本框?基於下拉列表選擇的輸入文本驗證
您可以將選定的下拉列表的值作爲輸入組件的屬性傳遞,以便驗證器可以抓取它。
E.g.
<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>
解決方法,並將驗證程序放在那裏。
謝謝,BalusC。有效!! 希望我能爲你的解決方案做+50。你搖滾! – srock
不客氣。 – BalusC