获取错误消息

时间:2013-06-05 11:44:13

标签: error-handling xpages

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

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>

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

2 个答案:

答案 0 :(得分:6)

使用以下内容检查消息:

facesContext.getMessages().hasNext()

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

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

<xp:div rendered="#{javascript:facesContext.getMessages().hasNext()}">
</xp:div>

答案 1 :(得分: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>