代码之家  ›  专栏  ›  技术社区  ›  Malin

隐藏xp:mesages框(空时)

  •  0
  • Malin  · 技术社区  · 6 年前

    在我的xpages应用程序中,我使用bootstrap创建主题。我有一个xp:消息框,我已经应用了一些引导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的值:消息?我试过getcomponent(…).getvalue(),但应用程序中断了。

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

    <div class="alert alert-info">
    <span>true</span><span role="alert"></span></div>
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   Patrick Kwinten    6 年前

    是否尝试将引导类直接应用于xp:messages控件?例如

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

    因此您不需要周围的面板来计算呈现的属性

        2
  •  3
  •   shillem    6 年前

    我是根据您的示例代码编写的,也就是说,您只想处理全局消息。重要的是你要通过 null getMessages的值 method . 这样,您将只筛选全局消息,或者换句话说,筛选未绑定到特定组件的消息。

    所有消息: facesContext.getMessages()

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

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

        3
  •  1
  •   stwissel    6 年前

    您希望将该调用包装成保存在ssjs库中的函数,并使用 rendered=JavaScript:hasMessages() 这使得以后更容易理解代码。

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

    jsf规范 getMessageList() 它返回一个可以检查的集合 isEmpty() . 不确定它是否已在xpages中实现。像往常一样,保罗在这里有更多的信息:

    http://www.intec.co.uk/how-many-xpages-errors-have-i-got/

    柜台似乎最可靠