[英]Why validation message is not displayed for a selectOneMenu component(JSF 2)?
我使用這個 class 從輸入字段進行驗證:
@ManagedBean
@RequestScoped
public class UserInputValidation {
public void validateCity(FacesContext context, UIComponent validate,
Object value) {
String inputFromField = (String) value;
if (inputFromField.equals("") || inputFromField.equals(" ")) {
FacesMessage msg = new FacesMessage("Odaberite grad");
throw new ValidatorException(msg);
}
}
//...
}
這是保存輸入值的托管 bean:
@ManagedBean
@RequestScoped
public class InputController {
//Attributes
private String city;
//Get set methods
為什么當我創建一個 selectOneComponent 並且我 select 第一個組件(空白輸入)時,沒有顯示驗證消息?
<h:selectOneMenu id="city" value="#{inputController .city}">
<f:selectItems value="#{searchController.formatedCities()}" validator="#{userInputValidation.validateCity}"/>
</h:selectOneMenu>
<span style="color: red;"><b><h:message for="city"
showDetail="true" /></b></span>
selectOneMenu 中的第一個字段是空白(formatedCitiesMethod() 返回一個“”作為第一個元素),那么如果在選擇空白的情況下單擊表單提交按鈕,為什么不顯示驗證消息?
validator
屬性必須在<h:selectOneMenu>
中的 go 中,而不是在<f:selectItems>
中
說了這么多,你為什么不直接使用required="true"
呢? 為什么驗證器是@ManagedBean
而不是@FacesValidator
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.