2013-05-16 18 views
1

我成功了,我現在用的處理上一個XPage事件如何通過託管bean運行beforerenderresponse事件

的beforePageLoad事件中使用EL運行豆運行良好:

<xp:this.beforePageLoad><![CDATA[#{pageController.beforePageLoad}]]></xp:this.beforePageLoad> 

但是,如果我嘗試用beforeRenderResponse同樣不運行:

<xp:this.beforeRenderResponse><![CDATA[#{pageController.beforeRenderResponse}]]></xp:this.beforeRenderResponse> 

如果通過SSJS運行beforeRenderResponse事件運行良好:

<xp:this.beforeRenderResponse><![CDATA[#{javascript:pageController.beforeRenderResponse();}]]></xp:this.beforeRenderResponse> 

的Java

public class Controller{ 
    private static final long serialVersionUID = -7116804417284920609L; 

    public void beforePageLoad() throws Exception { 
     Logger.getInstance().logEvent("Controller.beforeRenderResponse", Logger.LOG_LEVEL_DEBUG); 
    } 
    public void afterPageLoad() throws Exception { 
     Logger.getInstance().logEvent("Controller.beforeRenderResponse", Logger.LOG_LEVEL_DEBUG); 
    } 

    public boolean beforeRenderResponse() throws Exception { 
     Logger.getInstance().logEvent("Controller.beforeRenderResponse", Logger.LOG_LEVEL_DEBUG); 
    } 
    public void afterRenderResponse() throws Exception { 
     Logger.getInstance().logEvent("Controller.beforeRenderResponse", Logger.LOG_LEVEL_DEBUG); 
    } 

    public void afterRestoreView() throws Exception { 
     Logger.getInstance().logEvent("Controller.beforeRenderResponse", Logger.LOG_LEVEL_DEBUG); 
    } 
} 

有人可以請告知我你怎麼能運行使用EL的beforeRenderResponse事件?

回答

1

如果您在beforeRenderResponse中打開代碼窗口,您將看到沒有dropDown列表來選擇EL。

因此,如果沒有可能將其添加到之前的RenderResponse中,則無法強制使用EL。 欲瞭解更詳細的信息,你必須更深入地瞭解JSF生命週期。

關於此主題的一本好書是MasteringXpages或看看XPageMasterclassPeter Presnell

+0

沒有dropDown列表來選擇EL for beforePageLoad,但它適用於EL。 – JMCooper

+1

實際上,您可以使用簡單操作將EL添加到'beforeRenderResponse'事件。所以你的代碼應該像''。 – Naveen

+0

,這對我不起作用 – JMCooper