簡體   English   中英

為什么不顯示 selectOneMenu 組件(JSF 2)的驗證消息?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM