Xpages 隐藏xp:mesages框为空时

Xpages 隐藏xp:mesages框为空时,xpages,Xpages,在我的Xpages应用程序中,我使用引导程序来创建主题。我有一个xp:messages框,我已经应用了一些引导CSS 当没有消息时,我想隐藏包含消息的面板。因此,我提出了以下建议: <xp:panel rendered="#{javascript:facesContext.getMessages().hasNext()}" styleClass="alert alert-info"> <xp:text escape="true" value="#

在我的Xpages应用程序中,我使用引导程序来创建主题。我有一个xp:messages框,我已经应用了一些引导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()返回true

是否有其他方法可以检查xp:messages的值?我尝试了getComponent(…).getValue(),但是应用程序中断了

这是返回到浏览器的内容:

<div class="alert alert-info">
<span>true</span><span role="alert"></span></div>

真的

您希望将该调用包装到保存在SSJS库中的函数中,并使用类似于
rendered=JavaScript:hasMessages()
的内容,以便以后更容易理解代码

在函数内部,您应该能够迭代消息并检查它们是否为空(或者最终:消息您不关心它)

JSF规范具有
getMessageList()
,它返回一个集合,您可以使用
isEmpty()
检查该集合。不确定它是否已在XPages中实现。与往常一样,Paul在这里有更多信息:


计数器似乎是最可靠的

如果要将该调用包装到保存在SSJS库中的函数中,并使用类似于
rendered=JavaScript:hasMessages()
的方法,以便以后更容易理解代码

在函数内部,您应该能够迭代消息并检查它们是否为空(或者最终:消息您不关心它)

JSF规范具有
getMessageList()
,它返回一个集合,您可以使用
isEmpty()
检查该集合。不确定它是否已在XPages中实现。与往常一样,Paul在这里有更多信息:


计数器似乎是最可靠的

我根据您的示例代码编写,也就是说,您只想处理全局消息。将
null
值传递给getMessages
方法
,这一点很重要。这样,您将只过滤全局消息,或者换句话说,过滤未绑定到特定组件的消息

所有消息:
facesContext.getMessages()

仅限全局消息:
facesContext.getMessages(空)


特定组件的消息:
facesContext.getMessages('whateverIdYouHave')

我是根据您的示例代码编写的,也就是说,您只想处理全局消息。将
null
值传递给getMessages
方法
,这一点很重要。这样,您将只过滤全局消息,或者换句话说,过滤未绑定到特定组件的消息

所有消息:
facesContext.getMessages()

仅限全局消息:
facesContext.getMessages(空)


特定组件的消息:
facesContext.getMessages('whateverIdYouHave')

您是否尝试将引导类直接应用于xp:Messages控件?e、 g

<xp:messages id="messages1" infoClass="alert alert-info"></xp:messages>


因此,您不需要周围的面板并计算渲染属性

您是否尝试将引导类直接应用于xp:messages控件?e、 g

<xp:messages id="messages1" infoClass="alert alert-info"></xp:messages>


因此,您不需要周围的面板并计算渲染属性

这不是第一次,我完全忘记了我写了那篇博文!听起来问题可能是有一些消息与特定组件关联。因此它们不会仅显示在
globalOnly
消息面板中,而是存在于
hasNext()
中。查看中的规范,facesContext.getMessages()`有一个重载方法,该方法采用ID。因此,如果您为顶级XPage或视图面板之类的组件传递ID,它应该只获得全局ID(该组件不存在),这不是第一次,我完全忘了我写了那篇博文!听起来问题可能是有一些消息与特定组件关联。因此它们不会仅显示在
globalOnly
消息面板中,而是存在于
hasNext()
中。查看中的规范,facesContext.getMessages()`有一个重载方法,该方法采用ID。因此,如果您为顶级XPage或视图面板之类的组件传递ID,它应该只获得全局ID(该组件不存在),谢谢!我注意到我可以移除周围的面板控件,并且可以跳过调用hasMessages方法。谢谢!我注意到我可以移除周围的面板控件,并且可以跳过调用hasMessages方法。