獲取

2013-06-05 72 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

它可以是這麼簡單...非常感謝你! –