访问 ID 中带有点 (.) 的 bean

Posted

技术标签:

【中文标题】访问 ID 中带有点 (.) 的 bean【英文标题】:Accessing a bean with a dot(.) in its ID 【发布时间】:2010-09-08 22:17:24 【问题描述】:

在流定义中,我试图访问一个在其 ID 中有一个点的 bean

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

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

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

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

【问题讨论】:

【参考方案1】:

我可以通过使用 bean 访问器 (@) 符号和 bean 名称周围的单引号来做到这一点。

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

试试:

['bus.MyServiceFacade'].someAction()

'bus.MyServiceFacade'.someAction()

这可能有效,也可能无效...但类似的东西用于 JSP 的表达式语言中。

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于访问 ID 中带有点 (.) 的 bean的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Presto JSON 函数访问字段名称中带有“~”的 json 字段

从支持 bean 访问 JSF 组件标记属性值

从Java访问文件名中带有空格的文件

访问html表中带空格的json对象

url 路径中带有通配符的 Node.js 和 Websocket

spring父子容器