【问题标题】:Why validation message is not displayed for a selectOneMenu component(JSF 2)?为什么不显示 selectOneMenu 组件(JSF 2)的验证消息?
【发布时间】:2011-09-08 16:52:20
【问题描述】:

我使用这个类对输入字段进行验证:

@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 并选择第一个组件(空白输入)时,没有显示验证消息?

<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() 返回一个“”作为第一个元素),那么如果在选择空白的情况下单击表单提交按钮,为什么不显示验证消息?

【问题讨论】:

    标签: java validation jsf jsf-2 java-ee-6


    【解决方案1】:

    validator 属性必须放在 &lt;h:selectOneMenu&gt; 中,而不是 &lt;f:selectItems&gt;

    说了这么多,为什么不直接用required="true"呢?为什么验证器是@ManagedBean 而不是@FacesValidator

    【讨论】:

    • 我在考虑required="true",但我认为如果选择了空白,那也算作有效选择,因此验证会正确通过。
    • 不,空字符串和null 将触发required="true"。只有一个空格没有。只需将默认值设置为 null 并在必要时使用转换器在验证之前从所有输入字符串中修剪空格。
    • 酷我不知道所以在这种情况下我什至不需要验证方法:) 谢谢!
    • 如果他使用了@FacesValidator,他必须使用&lt;f:validator validatorId="userInputValidation " /&gt;并实现Validator接口。 validator 属性允许您从 ManagedBean 指定自定义验证方法,尽管他不需要另一个 MBean,但他可以使用 InputController
    • @Cosmin:该类显然专用于验证器(类名以 Validator 结尾),所以我只是想知道。
    猜你喜欢
    • 1970-01-01
    • 2012-12-30
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2023-03-23
    • 2014-03-11
    • 2014-01-04
    相关资源
    最近更新 更多