【问题标题】:how to replace string in SpEL expression?如何替换 SpEL 表达式中的字符串?
【发布时间】:2015-06-29 16:49:50
【问题描述】:

首先感谢关注
我在我的 spring 集成项目中定义了 ftp 适配器并使用mv 命令在 ftp 服务器中移动文件,目录结构是:
ftp-root
------------目录1\
--在\
---------------------------file.in
------退出\

我想移动ftp-root\Directory1\in\目录中的文件file.in以移动ftp-root\Directory1\out\,扩展名为.out.rptftp-root\Directory1\out\a.out
我使用int-ftp:outbound-gateway 适配器在ftp 服务器上运行mv 命令,我的代码是:

<int-ftp:outbound-gateway id="gatewayMv"
                          session-factory="ftpSessionFactory"
                          expression="payload.remoteDirectory + '/' + payload.filename"
                          request-channel="mvChannel"
                          command="mv"
                          rename-expression="payload.remoteDirectory + '/' + payload.filename "
                          reply-channel="aggregateResultsChannel"/>

如何在 rename-expression 选项中使用 SpEL 表达式将 in 替换为 out

【问题讨论】:

    标签: spring ftp spring-integration


    【解决方案1】:
    rename-expression="payload.remoteDirectory + '/' + payload.filename.replaceFirst('in', 'out')"
    

    在大多数情况下,SpEL 的工作方式与常规 Java 类似。由于filenameString,你可以申请任何字符串操作。

    【讨论】:

    • 我设置了但抛出异常:org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 49): Method call: Method relaceFirst(java.lang.String,java.lang.String) cannot be found on java.lang.String type
    • 我在 ls 命令中将文件名模式设置为 "*.in",但返回空列表,预期 file.in 你的想法是什么?
    • 单独的问题?不 ?请总结一下,我们必须在这里回答这个问题,而不是从单独的 SO 线程。但是,请首先阅读文档。用于LS 命令的 Spring 集成和 FTP。
    【解决方案2】:

    感谢@Artem Bilan ane @Gary 的回答
    使用字符串的另一种方法 如下定义一个 bean:

    public class StringUtil {
        public String replacement(String value,String var1,String var2) {
            return value.replace(var1,var2);
        }
    }
    

    并且在表达式选项中设置为:

    rename-expression="@stringUtil.replacement(payload.remoteDirectory + '/' + payload.filename,'in','out')"
    

    【讨论】:

      猜你喜欢
      • 2012-04-26
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      相关资源
      最近更新 更多