2

我们使用以下代码在验证文档时添加新的错误消息:

function addFacesMessage( message, component ){
     try {
        if( typeof component === 'string' ){
            component = getComponent( component );
        }

        var clientId = null;
        if( component ){
            clientId = component.getClientId( facesContext );
        }

        facesContext.addMessage( clientId, new javax.faces.application.FacesMessage( message ) );
     } catch(e){ 
        globalScriptErrors.add(e);
        requestScope.put("scriptErrors", globalScriptErrors);
     }
}

如果发生错误,我们会在每个验证例程中调用此函数:

facesContext.addMessage("", 
            new javax.faces.application.FacesMessage("errormessage" );

在我们的 XPage 中,我们有一个错误消息框来显示当前页面发生的所有错误:

<xp:messages id="messages2" styleClass="lotusMessage lotusWarning"></xp:messages>

现在,错误消息框中显示了消息,但是我们如何检查该页面是否有错误?我们希望将此信息用于例如弹出窗口,如果错误消息框中没有显示错误,则仅需要显示该信息。但是我们如何获得这些信息呢?

4

2 回答 2

6

使用以下命令检查消息:

facesContext.getMessages().hasNext()

如果消息存在,它将返回 true,如果不存在消息,则返回 false。

您可以使用它来控制例如这样的 div 的呈现:

<xp:div rendered="#{javascript:facesContext.getMessages().hasNext()}">
</xp:div>
于 2013-06-05T12:08:32.323 回答
3

它应该与:

if (facesContext.getMessages().hasNext())

这是一个工作示例:

<xp:text escape="true" id="computedField1">
<xp:this.value><![CDATA[#{javascript:if (facesContext.getMessages().hasNext())
        return "there is a error message";
    else
        return "no message";}]]></xp:this.value>
</xp:text>

<xp:button value="no title" id="button1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:
var message = "test";
var component = "none"

        try {
                if( typeof component === 'string' ){
                    component = getComponent( component );
                }


            var clientId = null;
            if( component ){
                clientId = component.getClientId( facesContext );
            }

            facesContext.addMessage( clientId, new javax.faces.application.FacesMessage( message ) );
         } catch(e){ 
            globalScriptErrors.add(e);
            requestScope.put("scriptErrors", globalScriptErrors);
         }
    }]]></xp:this.action>
  </xp:eventHandler>

于 2013-06-05T12:08:42.503 回答