2014-09-30 91 views
-1

我需要一些帮助,这:的Java扩展和覆盖方法

我使用一个bean注销页面用一个简单的方法

public class MyBean extends LoginBean{ 
... 
    public String doLogout() throws Exception 
    { 
... 
    ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).logout(); 
    FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); 
    return null; 
    } 
} 

凡豆LoginBean是扩展和我重写方法在MyBean doLogout(他们基本上是相同的代码)。 但当拨打以下

<p:commandButton action="#{myBean.doLogout()}" ajax="false" /> 

调试按钮进入LoginBean.doLogout()...

为什么?

感谢您的帮助,伙计们。

+0

我想你应该把@Override放在方法上,以确保它是重写。如果是这样,我想说你应该多帮一些 – 2014-09-30 17:42:12

+0

@ JaqenH'ghar谢谢你的帮助,我在提出这个问题之前尝试这个,但这不是重点。 – WyllianNeo 2014-10-01 11:22:34

回答

0

嗯,我解决创建类MyPhaseListener扩展PhaseListener,并覆盖某些阶段的问题,但我不知道为什么我需要让这个...

public class MyPhaseListener implements PhaseListener{ 

    @Override 
    public void afterPhase (PhaseEvent event) 
    { 
    ... 
    } 
    @Override 
    public void beforePhase (PhaseEvent event) 
    { 
    ... 
    } 

} 

如果有人解释为什么这是必要的,我会很感激。