Xpages 隐藏xp:mesages框为空时
在我的Xpages应用程序中,我使用引导程序来创建主题。我有一个xp:messages框,我已经应用了一些引导CSS 当没有消息时,我想隐藏包含消息的面板。因此,我提出了以下建议: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="#
<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方法。