瞬态和缓存页面中的Flash消息

时间:2017-05-05 16:26:39

标签: jsf jsf-2.2 omnifaces

我有一个基础瞬态视图的简单联系表单。

<f:view transient="true">

   <h:panelGroup id="messages" layout="block" > 
        <o:messages escape="false" infoClass="info" errorClass="error" globalOnly="true" rendered="#{not empty facesContext.messageList}" />
   </h:panelGroup>  

   <h:form id="contactform">

      please enter your name:
      <h:inputText id="name" required="true" requiredMessage="#{msg.fieldrequired}">
      ...

   </h:form>   

</f:view>

此页面也被缓存(使用omnifaces CacheControlFilter),因为此处的内容不是真正动态的,用户只提交一些请求参数。当表单成功提交时,managedbean会添加一条flash消息并执行刷新:

public void showSuccess() throws IOException {
    Messages.addFlashGlobalInfo("submit_success");
    Faces.refresh(); //ensure cleaning all input fields in the form
}

之后,页面现在包含带有渲染面消息的div,并且每次用户再次对此页面执行GET时,此消息现在都会出现。

<div id="messages">
   <ul>
     <li>Thank you for your feedback</li>
   </ul>
</div>

有没有办法摆脱这条消息?

提前谢谢。

0 个答案:

没有答案