【问题标题】:How to reference a spring bean explicitly in a SpEL expression如何在 SpEL 表达式中显式引用 spring bean
【发布时间】:2014-07-02 05:20:28
【问题描述】:

您好,我有一个名为“connection”的 spring bean - 我如何在 webflow 的 SpEL 表达式中显式引用它 - 明确地我的意思是我不希望 SpEL 尝试查找任何其他名为“connection”的变量,这可能存在于 webflow 范围内 - 这是我目前正在做的事情:

<action-state id="initialise-connection">
    <evaluate result="flowScope.initialisedConnection" expression="connection"/>

我已经阅读了有关使用“@”前缀仅针对 bean 的信息 - 正确的做法是什么?我该怎么做?

【问题讨论】:

  • 试试这个#{connection}

标签: spring-webflow spring-bean


【解决方案1】:

evaluate 标记用于调用 Action 类的子类中的 bean 方法或 execute() 方法

例如,如果您定义自己的操作,则应将其初始化为 @Component 或在您的 XML 配置文件中定义为 bean

@Component
public class MyAction {
   public Connection doSomething(RequestContext context){
    ...
   }
}

在您的流程定义XML 文件中,您只需像这样调用它

<evaluate result="flowScope.initialisedConnection" expression="myAction.doSomething( flowRequestContext)"/>

但是如果你定义了Action类的子类,会是这样的

@Component
public class MyAction implements Action {

   @Override
   public Event execute(RequestContext context) {
     ...
   }
}

在您的流程定义XML 文件中,您可以这样称呼它

<evaluate result="flowScope.initialisedConnection" expression="myAction"/>

【讨论】:

    【解决方案2】:

    这就是我过去在我的一个类中调用静态方法的方式。请试试这个。

    <action-state id="initialise-connection">
        <evaluate result="flowScope.initialisedConnection" expression="@com.app.connection.method()"/>
    </acton>
    

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 2020-10-08
      • 2014-01-14
      相关资源
      最近更新 更多