获取

2013-06-05 68 views
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> 

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

+0

什么'facesContext.getMessages()'我想它返回一个迭代器,你可以循环?从不尝试猜测。 =) –

+0

我完全同意,迈克尔:-) –

回答

3

应该一起工作

<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> 

+0

可以这么简单......非常感谢你! –

6

使用以下命令来检查邮件:

facesContext.getMessages().hasNext() 

它将返回true,如果有消息,假如果不存在消息。

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

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

这里工作的例子:

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

它可以是这么简单...非常感谢你! –