Spring Integration Router 中的 SpEL 可以使用 Java 的字符串 class 方法吗

Can SpEL in Spring Integration Router use Java's String class methods

这是

的扩展问题

我项目中的技术

Spring Boot 2
Spring Integration (XML style)
Java 8
Tomcat 9.x/Liberty 19.0.0.1

作为我的 Spring 集成项目的一部分(REST API 带有入站 http 网关,需要一个 XML 输入并产生一个 XML 输出),这是我的问题的设置:

这就是说,是否可以编写一个路由器(使用 XML 配置)来检查 Message<MyPOJO> 中的 response 是否包含 keyword/specific 一段文字 来确定下一步去哪里?

举例来说,是这样的:

<int:router input-channel="inputChannel" expression="payload.getResponse().contains("keyword")">
    <int:mapping value="true" channel="oneRoute"/>
    <int:mapping value="false" channel="anotherRoute"/>
</int:router>

当我这样做并启动应用程序时,错误是:

nested exception is org.xml.sax.SAXParseException; lineNumber: 44; columnNumber: 98; Element type "int:router" must be followed by either attribute specifications, ">" or "/>"

具体来说,expression="payload.getResponse().contains("keyword")" 部分似乎有问题得到解决,这可能与 keyword

周围的引号有关

非常感谢任何帮助。

真诚的, 巴拉斯

好的。我看到你有一个 XML 语法错误。修复是这样的:

expression="payload.getResponse().contains('keyword')"

keyword单引号中,而不是双引号

这绝对是 SpEL 的工作原理:当您想在表达式中指定文字时,您需要使用单引号:https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions-evaluation