2011-11-13 20 views
0

我最近開始使用JSF(我對HTML也很陌生),並且遇到了JSF表達式的問題。我需要發送一個動態值給我的一個後備bean,這個值是當前登錄用戶的ID。我試圖與嵌套JSF的表達,但我得到了以下情況例外:= 「#{newLogBean.saveOrUpdateLog(#{user.current.id})}」 無法 使用嵌套的JSF表達式在JSF中發送動態數據到支持bean

動作解析表達式 [# {newLogBean.saveOrUpdateLog(#{} user.current.id)}]

在我的網頁,該行看起來是這樣的:

<h:commandButton value="Add Log Entry" action="#{newLogBean.saveOrUpdateLog(#{user.current.id})}"/> 

據我瞭解,我不能用像這樣嵌套的表達式,所以我的問題是我如何解決這個問題以另一種方式。是否有可能在JSF聲明一個變量來獲取用戶ID,然後使用該變量爲後盾豆,就像這樣:

(in JSF) int id = user.current.getId(); // get id of current logged in user  
<h:commandButton value="Add Log Entry" action="#{newLogBean.saveOrUpdateLog(id)}"/> 

什麼是實現這一目標的最簡單的方法?

回答

1

在2.2版統一表達式語言中,可以調用參數化方法。 較新的應用程序服務器,如Glassfish 3或Tomcat 7包括該版本。

在此版本中,主要的變化是增加方法invokations與在EL 參數,如#{trader.buy(「JAVA」)}。

specification在125

頁換句話說,你可以做這樣的事情:

<h:commandButton value="Add Log Entry" action="#{newLogBean.saveOrUpdateLog(user.current.id)}" /> 
+0

謝謝你,它的工作完美地使用user.current.id在表達式內。 – Fortune