[英]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.