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

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

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

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

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

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

【问题讨论】:

    标签: java spring spring-webflow spring-el


    【解决方案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 方法。

          【讨论】:

            猜你喜欢
            • 2012-06-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-22
            • 1970-01-01
            • 2011-07-27
            • 1970-01-01
            • 2020-04-17
            相关资源
            最近更新 更多