【问题标题】:Use two validation messages in different places for JSF SelectOneMenu在 JSF SelectOneMenu 的不同位置使用两个验证消息
【发布时间】:2016-11-19 17:23:41
【问题描述】:

我正在使用 JSF 下拉列表。这是我的代码

<h:selectOneMenu id="selectedMenu" value="#{bean.selectedVal}" validator="#{bean.validate}" validatorMessage="#{bean.message}">
    <f:selectItems value="#{bean.list}" .../>
    <f:ajax event="change" render="frm:msgSelectedMenu1" />
</h:selectOneMenu>
<h:message for="selectedMenu" style="color:red" id="msgSelectedMenu1" />
<h:message for="selectedMenu" style="color:green" id="msgSelectedMenu2" />

我正在解析抛出 java 异常的验证错误消息。

public void validate(FacesContext context, UIComponent component, Object value)
        throws ValidatorException {
 ...
 if (condition 1) {
    FacesMessage msg = new FacesMessage();
    setMessage("Error_Message_1");
    throw new ValidatorException(msg);
 }}

在这种情况下,错误消息与“msgSelectedMenu1”成功绑定。但在某些原因中,我想为某些带有“msgSelectedMenu2”的选定项目设置另一个错误消息(“Error_Message_2”)。

【问题讨论】:

    标签: validation jsf drop-down-menu jsf-2


    【解决方案1】:

    你可以尝试使用f:ajaxactionListener,你检查actionListener中的值,然后在h:message上使用rendered抛出ValidatorException,删除validator属性

    <h:message for="selectedMenu" style="color:red" id="msgSelectedMenu1" rendered="${foo.message1}" />
    <h:message for="selectedMenu" style="color:green" id="msgSelectedMenu2" 
    rendered="${foo.message2}" />
    
    
    public void foo(){
             if (condition 1) {
                FacesMessage msg = new FacesMessage();
                setMessage("Error_Message_1");
                message1 = true; 
                message2 = false;
                throw new ValidatorException(msg);
    
             }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 2014-11-08
      • 1970-01-01
      相关资源
      最近更新 更多