簡體   English   中英

自定義PhaseListener在jsf 2中調用兩次

[英]Custom PhaseListener called twice in jsf 2

我正在使用JSF 2.0中的PhaseListener。 但它的方法每次都被調用兩次。

@Override
public void beforePhase(PhaseEvent arg0) {
    System.out.println("Start Phase "+arg0.getPhaseId()+" here the value "+ ++i +" object "+this);  
}

和輸出是這樣的

Start Phase RESTORE_VIEW 1 here the value 1 object com.phaseListener.MyPhaseListener@cc8c29
Start Phase RESTORE_VIEW 1 here the value 1 object com.phaseListener.MyPhaseListener@106054a

每次被兩個不同的對象調用。

請讓我知道,為什么會這樣?

如果這有助於某人谷歌搜索此問題。

在我的情況下,我從Glassfish 3移動到Tomcat 7,我注意到我的自定義階段監聽器被注冊兩次導致重復的日志條目。

在我的web.xml中,我有一個ConfigureListener,它是Glassfish 3所必需的,但會在Tomcat 7上觸發第二次注冊:

<listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

我只是刪除了這個塊,它解決了這個問題。

這是因為你已經在JSF應用程序中兩次注冊了你的階段監聽器。 對此而言,“為什么”反過來又不具有建設性的責任。 如果您對同一個階段監聽器被注冊兩次感到困擾,只需刪除第二個注冊。

如果您使用Tomcat 7.0.4x,則會出現此問題。 嘗試將Tomcat降級到至少7.0.39或更低。 問題很可能得到解決。 我仍然不知道原因,但它的工作原理。 希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM