2016-03-03 40 views
0

我的Xpages應用程序具有用於應用程序範圍設置的cacheBean。我有一個PC文檔的管理Bean,它具有整數類型的字段狀態。Xpages:在EL中的CacheBean中調用Java方法時出錯Error

在cacheBean中,我有一個方法getPCStatus(Integer狀態),當給定數字時將返回狀態的字符串文本。

在我XPAGE我有我要綁定的

cacheBean.getPCStatus(PCBean.status)結果

所以它會退還「庫存」爲1和一些文本字段否則爲2等

但是,代碼是拋出一個錯誤。

下面是代碼:

readonly="true"> 
<xp:this.value><![CDATA[#{CacheBean.getPCStatus(PCModelBean.status)}]]></xp:this.value> 
</xp:inputText> 

的錯誤是

錯誤EL語法,屬性 '值':CacheBean.getPCStatus(PCModelBean.status)

我知道我讀的東西關於這很久以前,但不記得如何處理這個,但無法找到它。

我想知道getPCStatus方法應該在PCBean還是在cacheBean中?

回答

3

EL使用的版本n XPage不支持使用參數調用方法。如果getPCStatus()是一個零參數方法,那麼可以用#{CacheBean.pCStatus}來調用它,大概是這樣,但這是它的參數。

有幾個常見的解決方法:如果CacheBean本身實現MapDataObject,那麼EL會調用getgetValue方法,分別用任何你後放「」 - 你可以用它來排序虛假的方法調用。

或者,你可以繼續CacheBean一個POJO(不執行這些接口之一),但有從getPCStatus返回值本身是一個MapDataObject,這將帶你傳進去的值(在這種情況下,PCModelBean.status)和做一個像#{CacheBean.pCStatus[PCModelBean.status]}綁定的查找。 DataObject s沒什麼可寫的:https://frostillic.us/blog/posts/FE0AE00B7CEC4F8885257D46006CAB68

或者,作爲所有這些的完整替代方案,如果您不需要綁定來讀寫,您可以使用SSJS來調用該方法。

+0

傑西,非常好,完整的解釋。在這種情況下,只能讀取該值,因此改爲SSJS可以很好地工作。 –