【问题标题】:How to call the bean with the separator in the name to flow如何调用名称中带有分隔符的bean进行流动
【发布时间】:2016-08-16 23:12:10
【问题描述】:

我有一颗豆子

<bean name="api.HelloWorld" class="ru.example.api.HelloWorld"/>

当你调用 flow 时,我得到一个错误。

<evaluate expression="api.HelloWorld.test()"/>

怎么打电话?

【问题讨论】:

  • 你遇到了什么错误?

标签: java spring spring-webflow


【解决方案1】:

如果你使用的是 SpEL,你可以使用这个:

<evaluate expression="@'api.HelloWorld'.test()"/>

如果您使用的是 OGNL 或 jboss-el,我认为除了使用实用程序类之外无法完成,如下所示:

@Component
public class WebFlowUtil {

    @Autowired
    private ApplicationContext applicationContext;

    public Object getBean(String beanName) {
        return applicationContext.getBean(beanName);
    }
}

然后使用:

<evaluate expression="webFlowUtil.getBean('api.HelloWorld').test()"/>

【讨论】:

  • ERROR: SEVERE: Servlet.service() for servlet spring 抛出异常 ognl.ParseException: Encountered ""\'" "\'api.HelloWorld\' "" 在第 1 行第 2 列。是期待以下之一:“@” ... ... 在 ognl.OgnlParser.generateParseException(OgnlParser.java:3172) 在 ognl.OgnlParser.jj_consume_token(OgnlParser.java:3051)
  • 你是否转义了单引号?
  • 无论如何,看起来您正在使用 OGNL,所以我认为它不会起作用,正如我在回答中所说的那样
  • 添加了一个适用于 OGNL 和 jboss-el 的解决方法(用 jboss-el 测试)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多