2016-03-03 72 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可以很好地工作。 –