模态JSF中的错误消息不起作用

时间:2013-12-23 20:07:53

标签: jsf jsf-2 richfaces

我在jsf中有一个xhtm,在...中有一个模态。

在这个模态中,我有一个字段,我试图验证并返回错误。

我的代码:

模态:

    <rich:popupPanel id="cancelssi" modal="true" width="500" height="280" zindex="2" domElementAttachment="form" show="#{demandasMB.showCancelar}" showWhenRendered="#{demandasMB.showCancelar}" >
    ...  


<h:panelGroup layout="block" class="area-input-100" id="idmotivocancelamentopanel">
                <h:panelGroup  class="label-campo">Justificativa de cancelamento:</h:panelGroup>    
                <h:inputTextarea styleClass="textarea-form-2-linhas" id="idmotivocancelamento" value="#{demandasMB.demandas.cnmmotivocancelamento}" maxlength="255"/>
                <h:message for="idmotivocancelamento" />                                    
            </h:panelGroup> 

            <h:panelGroup layout="block" class="clear"/>

            <h:panelGroup layout="block" styleClass="alinhaBotao">
                <h:commandButton value="Cancelar">
                    <f:ajax render="idmotivocancelamento idmotivocancelamentopanel" 
                                event="click"
                                listener="#{demandasMB.preCancelar()}"
                                execute="@form"
                                />
                </h:commandButton>          
                <h:commandButton value="Fechar"/>           
            </h:panelGroup>
    </rich:popupPanel>

在我的MB中我有:

    public void preCancelar(){

    if(StringUtils.isBlank(demandas.getCnmmotivocancelamento())){

        FacesMessage fm = new FacesMessage("Favor preencher");
        FacesContext.getCurrentInstance().addMessage("idmotivocancelamento",fm);

    }else{
        showConfirmacaoCancelar = true;
        showCancelar = false;
    }
}

我正在构建FacesMessage但不会出现在我的模态中。

我做错了什么?

感谢

1 个答案:

答案 0 :(得分:1)

您需要更新idmotivocancelamentopanel以反映您要添加的FacesMessages

另一种方法是使用<rich:message/>。使用ajaxRendered="true"属性将允许在ajax-requests上自动更新消息组件。所以你会改为:

<rich:message for="idmotivocancelamento" ajaxRendered="true"/>