我们使用以下代码在验证文档时添加新的错误消息:
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 :(得分: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>