2015-04-22 19 views
2

首先,感谢您的关注
我在春天集成项目定义的FTP适配器和使用mv命令在FTP服务器上移动文件,目录结构:
FTP根
---------- -Directory1 \
----------------- in \
------------------------ ---file.in
-----------------出\如何替换SpEL表达式中的字符串?

我想移动文件file.inftp-root\Directory1\in\目录与.out.rpt extensi移动ftp-root\Directory1\out\ftp-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"/> 

如何使用规划环境地政司表达重命名表达选项和out更换in

回答

1
rename-expression="payload.remoteDirectory + '/' + payload.filename.replaceFirst('in', 'out')" 

在大多数情况下,SpEL的工作方式与普通的Java一样。由于filenameString,您可以申请任何字符串操作。

+0

感谢@Artem的回复。 –

+0

我设置它,但抛出波纹管异常: 'org.springframework.expression.spel.SpelEvaluationException:EL1004E:(pos 49):方法调用:方法relaceFirst(java.lang.String,java.lang.String)找不到java.lang.String类型' –

+0

尝试'replaceFirst' –

1

感谢@Artem比兰姊@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')"