在流程定义中,我试图访问ID为
的点的bean(例如:<evaluate expression="bus.MyServiceFacade.someAction()" />
然而,它不起作用。 SWF试图找到一个bean“总线”。
最初,我通过使用辅助bean来加载所需的bean来解决它,但解决方案不够优雅且不舒服。使用别名也是不可能的,因为bean是大型系统的一部分,我无法篡改它们。
简而言之,没有一个解决方案允许我直接使用其原始名称来引用bean。这在当前的SWF版本中是否可能?
答案 0 :(得分:8)
我能够通过使用bean访问器(@
)符号和bean名称周围的单引号来实现此目的。
使用您的示例:#{@'bus.MyServiceFacade'.someAction()}
答案 1 :(得分:1)
这是EL解析器的限制(通常是Spring Web Flow的OGNL或jboss-el)。 EL使用点表示法来解析导航链,导致您描述的初始行为(尝试查找“总线”bean)。
答案 2 :(得分:0)
尝试:
[ 'bus.MyServiceFacade']。someAction()
或
“bus.MyServiceFacade'.someAction()
这可能有用,或者可能没有......但是在JSP的表达式语言中使用了类似的东西。
答案 3 :(得分:-1)
根据我的经验,任何带有getter方法的东西都可以通过点符号来访问。在您的示例中,bus
bean表示的任何对象都需要getServiceFacade
方法,并且getServiceFacade
返回的对象需要getSomeAction
方法。