2012-07-23 167 views
0

我正在使用JSF 2.0創建網頁。如何在Javascript中調用Java方法

我想要做的是,調用一個方法setLastVisitedPage,我在豆MyBean每頁加載時。

我可以簡單地寫

<h:body onLoad="#{MyBean.setLastVisitedPage()}" 

不過,我想在所有的網頁編寫,並且已經有創建30-40頁做到這一點。 :(

在頁面上,因爲我有共同的標題,我已經創建了一個文件調用commonPage.xhtml。我當時就想,包括該文件在這裏。

所以我在commonPage.xhtml這樣,每當任何頁面加載,myScript.js下面添加被調用和我警覺 「我在這裏」。

<h:outputScript name="js/myScript.js" target="head" /> 

myScript.js具有

onload = alert("i m here"); 

每當我打開任何新頁面時,我都會收到警報,因爲「我在這裏」。

現在我的問題是我該如何在JavaScript中添加#{MyBean.setLastVisitedPage()}以便setLastVisitedPage()被每個頁面調用?

有沒有其他方法?可能是我以錯誤的方式思考。

回答

1

由於您使用JSF您更好地使用PreRenderViewEvent,這樣

<f:metadata> 
    <f:event type="preRenderView" listener="#{MyBean.putLastVisitedPage}"/> 
</f:metadata> 


public void putLastVisitedPage(ComponentSystemEvent event){ 
} 

採取這裏JSF 2 PreRenderViewEvent Example

+0

一看讓我試試...如果它看起來漂亮,我會讓你知道:) – 2012-07-23 11:32:58

+0

獲取異常爲'javax.faces.FacesException:服務跟蹤器尚未初始化' – 2012-07-23 11:41:08

+0

谷歌有點爲這個例外... – Daniel 2012-07-23 11:45:03