【问题标题】:show info main message in parent with primefaces在具有primefaces的父级中显示信息主要消息
【发布时间】:2013-01-24 16:00:18
【问题描述】:

我只想要一个

<p:growl id="messages"/>   

所以我为整个项目创建了一个表单,其中包含页面元素等作为主要表单中的表单,类似于这样。

    <h:form id="mainForm">  
        <p:growl id="messages" showDetail="true" autoUpdate="true" globalOnly="true" for="mainForm"/>   

        <div id="container">
            <div id="banner" >
                <a><img src="#{facesContext.externalContext.requestContextPath}/images/logo.png" alt="" border="0" /></a>
                <ui:insert name="head">
                    <ui:include src="/panels/header.xhtml" />
                </ui:insert>

            </div>
            <div id="content">
                <ui:insert name="content">
                    <ui:include src="/panels/main.xhtml" />
                </ui:insert>
            </div>
            <div id="right">
                <ui:insert name="right-sidebar">
                    <ui:include src="/panels/box.xhtml" />
                </ui:insert>
            </div>

            <div id="footer"><h1>Footer</h1></div>

        </div>
    </h:form> 

当其中一个面板.. (xhtml) 文件显示一条消息时,问题就出现了,它没有在主页的咆哮声中显示。 我已经尝试过,全球性的,但没有运气。

总结:我如何创建一次 p:growl 来处理我网站的所有消息?

任何建议

提前谢谢

【问题讨论】:

  • 问题可能是FacesMessages 的排队方式。在这些面板中,您是否使用特定客户端 ID 对消息进行排队?
  • 我在有和没有特定客户端 ID 的情况下都这样做了,但在这种情况下我仍然没有工作:FacesContext.getCurrentInstance().addMessage("mainForm", new FacesMessage(severity, title, msg)) ;但任何改变。
  • mainForm 一个组件还是&lt;h:form/&gt;?我没有看到(或尝试过)为表单排队消息。改用表单中的特定组件
  • and so on as forms inside the main one 你在嵌套表单吗?你不应该这样做
  • globalOnly="true" 指定您只想显示未附加到任何元素 id 的消息,因此您正在进一步缩小范围。

标签: java forms jsf primefaces messages


【解决方案1】:

你不应该嵌套多个表单(正如你所说的那样)。

尝试封装

<p:growl .../> 

在另一个表单之前标记一个表单,并将 autoUpdate 属性保留为 true。删除 globalOnly 属性,因为这将导致只有组件 id 为“null”的 FacesMessages 将被显示:

<h:form id="mainForm">  
    <p:growl id="messages" showDetail="true" autoUpdate="true"/> 
</h:form>  

    <div id="container">
        <div id="banner" >
            <a><img src="#{facesContext.externalContext.requestContextPath}/images/logo.png" alt="" border="0" /></a>
            <ui:insert name="head">
                <ui:include src="/panels/header.xhtml" />
            </ui:insert>

        </div>
        <div id="content">
            <ui:insert name="content">
                <ui:include src="/panels/main.xhtml" />
            </ui:insert>
        </div>
        <div id="right">
            <ui:insert name="right-sidebar">
                <ui:include src="/panels/box.xhtml" />
            </ui:insert>
        </div>

        <div id="footer"><h1>Footer</h1></div>

    </div>

希望对您有所帮助!

【讨论】:

    【解决方案2】:

    最后我设法让它工作,这很简单,我怀疑它,我必须更新处理消息的咆哮。

         <h:form id="mainForm">  
            <p:growl id="messages" showDetail="true" autoUpdate="true"/>   
         </h:form>  
    

    like,检查更新方法。

      <p:commandButton  id="logBut" value="Login" actionListener="#{loginBean.loginUser}" update=":mainForm:message" icon="ui-icon-carat-1-e"/>  
    

    不管有没有嵌套形式都可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      相关资源
      最近更新 更多