为什么即使调用方法也不会在某些页面上显示Faces Message?

时间:2018-08-02 11:46:35

标签: jsf primefaces messages

我有多个页面,在某些页面上会显示FacesMessage,而在其他页面上则不会。但我不知道为什么。在下面的示例中,ajax位于false上,但是在某些ajax位于true上,就像其他地方一样,但是即使相同的代码也无法工作

在每种情况下都调用该方法,日志证明了这一点,但在某些情况下未显示该消息

我有一个菜单栏,它位于每个页面的顶部,为

<html xmlns="http://www.w3.org/1999/xhtml" xlmns:h="http://java.sun.com/jsf/html" xlmns:f="http://java.sun.com/jsf/core" xlmns:ui="http://java.sun.com/jsf/facelets" xlmns:p="http://primefaces.org/ui">
  <f:view contentType="text/html">
    <h:head>
       <f:facet name="first"> 
            <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
            <title>LOG</title>
        </f:facet>
        <h:body>
            <p:growl showDetail="true" sticky="true">  
                <p:autoUpdate disabled="false" /> 
            </p:growl>
            ...
            <p:layout>
                <p:layoutUnit position="center">
                    <ui:insert name="center" />
                </p:layoutUnit>
            </p:layout>
        </h:body>
      </f:view>
</html> 

工作页面就像

<!DOCTYPE HTML PUBLIC>
<ui:composition template="/menu.xhtml"  xmlns="http://www.w3.org/1999/xhtml" 
         xlmns:h="http://java.sun.com/jsf/html" xlmns:f="http://java.sun.com/jsf/core" 
         xlmns:ui="http://java.sun.com/jsf/facelets" xlmns:p="http://primefaces.org/ui">
    <ui:define name="center>
        <h:form >
            <p:commandButton action="#{firstBean.method()}" />
        </h:form>
    </ui:define>
</ui:composition>

不工作页面就像(这里的ajax为false,但也有不工作页面的ajax为true):

<!DOCTYPE HTML PUBLIC>
<ui:composition template="/menu.xhtml"  xmlns="http://www.w3.org/1999/xhtml" 
         xlmns:h="http://java.sun.com/jsf/html" xlmns:f="http://java.sun.com/jsf/core" 
         xlmns:ui="http://java.sun.com/jsf/facelets" xlmns:p="http://primefaces.org/ui">
    <ui:define name="center>
        <h:form enctype="mulipart/form-data" >
            <h:inputFile value="#{secondBean.inputFile}" />
            <p:commandButton ajax="false" action="#{secondBean.method()}"  process="@form" />
        </h:form>
    </ui:define>
</ui:composition>

两个method()都是100%相同:

public void method(){
    new JSFUtils().sendMessage("Test 1");
    Logger.getAnonymousLogger().severe("Test"); // Always worked, always called
    //...
}

我有一个util类的地方

public calss JSFUtil{
    public void sendMessage(String msg){
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(Faces.Message.SEVERITY_WARN, "Warn", msg));
    }
}

0 个答案:

没有答案