空时隐藏 xp:mesages 框
Hiding xp:mesages box when empty
在我的 Xpages 应用程序中,我使用 Bootstrap 作为主题。我有一个 xp:messages 盒子,我已经应用了一些 Bootstrap CSS 到。
什么时候没有消息我想隐藏包含消息的面板。所以我想到了以下内容:
<xp:panel rendered="#{javascript:facesContext.getMessages().hasNext()}" styleClass="alert alert-info">
<xp:text escape="true" value="#{javascript:facesContext.getMessages().hasNext()}">
</xp:text>
<xp:messages globalOnly="true" layout="list"></xp:messages>
</xp:panel>
但是我注意到有时 xp:messages 控件是空的但是 facesContext.getMessages().hasNext() returns true.
还有其他方法可以检查xp:messages的值吗?我尝试了 getComponent(...).getValue() 但应用程序中断了。
这是返回给浏览器的内容:
<div class="alert alert-info">
<span>true</span><span role="alert"></span></div>
您想将该调用包装到您保存在 SSJS 库中的函数中,并使用类似 rendered=JavaScript:hasMessages()
的东西,这样以后代码更容易理解。
在函数内部,您应该能够遍历消息并检查它们是否为空(或者最终:您不关心的消息)。
JSF 规范 getMessageList()
returns 一个你可以用 isEmpty()
检查的集合。不确定它是否已在 XPages 中实现。 Paul 和往常一样,在这里有更多信息:
http://www.intec.co.uk/how-many-xpages-errors-have-i-got/
计数器似乎最可靠
我是根据你的示例代码写的,就是你只想处理全局消息。将 null
值传递给 getMessages method
很重要。这样,您将仅过滤全局消息,换句话说,过滤与特定组件无关的消息。
所有消息:facesContext.getMessages()
仅限全局消息:facesContext.getMessages(null)
特定组件的消息:facesContext.getMessages('whateverIdYouHave')
您是否尝试过直接将 bootstrap class 应用于 xp:messages 控件?例如
<xp:messages id="messages1" infoClass="alert alert-info"></xp:messages>
因此您不需要周围的面板并计算渲染的 属性
在我的 Xpages 应用程序中,我使用 Bootstrap 作为主题。我有一个 xp:messages 盒子,我已经应用了一些 Bootstrap CSS 到。
什么时候没有消息我想隐藏包含消息的面板。所以我想到了以下内容:
<xp:panel rendered="#{javascript:facesContext.getMessages().hasNext()}" styleClass="alert alert-info">
<xp:text escape="true" value="#{javascript:facesContext.getMessages().hasNext()}">
</xp:text>
<xp:messages globalOnly="true" layout="list"></xp:messages>
</xp:panel>
但是我注意到有时 xp:messages 控件是空的但是 facesContext.getMessages().hasNext() returns true.
还有其他方法可以检查xp:messages的值吗?我尝试了 getComponent(...).getValue() 但应用程序中断了。
这是返回给浏览器的内容:
<div class="alert alert-info">
<span>true</span><span role="alert"></span></div>
您想将该调用包装到您保存在 SSJS 库中的函数中,并使用类似 rendered=JavaScript:hasMessages()
的东西,这样以后代码更容易理解。
在函数内部,您应该能够遍历消息并检查它们是否为空(或者最终:您不关心的消息)。
JSF 规范 getMessageList()
returns 一个你可以用 isEmpty()
检查的集合。不确定它是否已在 XPages 中实现。 Paul 和往常一样,在这里有更多信息:
http://www.intec.co.uk/how-many-xpages-errors-have-i-got/
计数器似乎最可靠
我是根据你的示例代码写的,就是你只想处理全局消息。将 null
值传递给 getMessages method
很重要。这样,您将仅过滤全局消息,换句话说,过滤与特定组件无关的消息。
所有消息:facesContext.getMessages()
仅限全局消息:facesContext.getMessages(null)
特定组件的消息:facesContext.getMessages('whateverIdYouHave')
您是否尝试过直接将 bootstrap class 应用于 xp:messages 控件?例如
<xp:messages id="messages1" infoClass="alert alert-info"></xp:messages>
因此您不需要周围的面板并计算渲染的 属性