访问其ID中带有点(。)的bean

时间:2008-09-15 13:12:04

标签: java spring spring-webflow spring-el

在流程定义中,我试图访问ID为

的点的bean

(例如:<evaluate expression="bus.MyServiceFacade.someAction()" />

然而,它不起作用。 SWF试图找到一个bean“总线”。

最初,我通过使用辅助bean来加载所需的bean来解决它,但解决方案不够优雅且不舒服。使用别名也是不可能的,因为bean是大型系统的一部分,我无法篡改它们。

简而言之,没有一个解决方案允许我直接使用其原始名称来引用bean。这在当前的SWF版本中是否可能?

4 个答案:

答案 0 :(得分:8)

我能够通过使用bean访问器(@)符号和bean名称周围的单引号来实现此目的。

使用您的示例:#{@'bus.MyServiceFacade'.someAction()}

答案 1 :(得分:1)

这是EL解析器的限制(通常是Spring Web Flow的OGNL或jboss-el)。 EL使用点表示法来解析导航链,导致您描述的初始行为(尝试查找“总线”b​​ean)。

答案 2 :(得分:0)

尝试:

[ 'bus.MyServiceFacade']。someAction()

“bus.MyServiceFacade'.someAction()

这可能有用,或者可能没有......但是在JSP的表达式语言中使用了类似的东西。

答案 3 :(得分:-1)

根据我的经验,任何带有getter方法的东西都可以通过点符号来访问。在您的示例中,bus bean表示的任何对象都需要getServiceFacade方法,并且getServiceFacade返回的对象需要getSomeAction方法。