2011-07-20 63 views
0

我正在開發一個JSF 2.0項目,並學習使用系統事件的好處。不過,我參考的書'Core Java Server Faces 3rd Edition'列出了總共14種系統事件類型,可用於f:event標記的type屬性。其中一些按我的預期工作,例如UIComponent標籤上的「preRenderComponent」,或UIViewRoot標籤上的「preRenderView」。但是,除了這兩個,還有其他一些選擇,本書中提到的其他事件都沒有發揮作用。例如,我無法使postRestoreState類型的事件在UIComponent上工作。相反,當JSF嘗試呈現頁面時,我得到一個ClassNotFound異常,大概是應該處理postRestoreState事件的系統事件類,或者是我試圖監聽的任何事件。JSF未知系統事件

爲什麼這些其他事件類型不起作用?是否還有其他一些我需要的庫,或者是否有其他方法來實現我需要使用的系統事件偵聽器。下面是一個失敗的標籤這樣的一個例子:

  <h:commandLink 
       action="editPlant" 
       value="#{appMessages.UsersNavigationAddPlant}" 
       styleClass="#{userSession.selectedStyle}" 
       > 
       <f:event type="postRestoreState" listener="#{userSession.setSelectedStyle()}" /> 
      </h:commandLink> 

回答

1

看來,你需要完整的類名:

<f:event type="javax.faces.event.PostRestoreStateEvent" listener="#{bean.postRestoreState}"/> 
+0

這有助於。謝謝! – user470714