2015-04-22 25 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')"