3

我有下一个网址:http://host:port/page.xhtml?response=something

我想渲染 ap:message if response==something

我有下一个代码:

 <h:panelGroup rendered="#{param.response == 'something'}">
            <h:outputText value="message" /> 
       </h:panelGroup>

这呈现一个<div>message</div>

如果 response==something我想渲染一个<p:messages /> or <p:growl />及其值“消息”

请帮我编写代码以及其他内容:

  • 我是否需要一个 bean 来向 p:messages 或 p:growl 发送值?
  • 我需要从 a 调用 p:messages 或 p:growl<p:commandButton />吗?
  • 我不能使用<h:body onload="callFunction()">,因为 h:body 在模板 xhtml <ui:insert name="content"></ui:insert>上,而我的视图<ui:composition ... <ui:define name="content" >在其他 xhtml 上,而 h:body 对几个视图来说是通用的
4

1 回答 1

1

您确实需要使用FacesContext#addMessage()将消息添加到上下文中。在最初的请求中,您最好的选择是

<f:metadata>
    <f:viewParam name="response" value="#{bean.response}"/>
    <f:event type="preRenderView" listener="#{bean.init}" />
</f:metadata>

private String response;

public void init() {
    if (response != null) { 
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(
            FacesMessage.SEVERITY_INFO, response, null));
    }
}

顺便说一句,您还可以使用单独的<p:messages globalOnly="true"><p:growl globalOnly="true">显示带有客户端 ID 的面孔消息。null

也可以看看:

于 2012-12-13T13:22:50.117 回答