Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么RemoteFileTemplate会忽略setFileNameExpression中设置的值?_Java_Spring_Expression_Filenames_Spring Integration - Fatal编程技术网

Java 为什么RemoteFileTemplate会忽略setFileNameExpression中设置的值?

Java 为什么RemoteFileTemplate会忽略setFileNameExpression中设置的值?,java,spring,expression,filenames,spring-integration,Java,Spring,Expression,Filenames,Spring Integration,使用SpringIntegration4.1.1.RELEASE将消息有效负载中的文件上载到远程sFtp共享。我使用的是如下初始化的sFtpRemoteFileTemplate: Expression remoteDirectoryExpression = new LiteralExpression("si.sftp.sample"); SpelExpressionParser parser = new SpelExpressionParser(); Expression fileNameEx

使用SpringIntegration4.1.1.RELEASE将消息有效负载中的文件上载到远程sFtp共享。我使用的是如下初始化的sFtpRemoteFileTemplate:

Expression remoteDirectoryExpression = new  LiteralExpression("si.sftp.sample");
SpelExpressionParser parser = new SpelExpressionParser();
Expression fileNameExpression = new LiteralExpression("foo.txt");

template = new SftpRemoteFileTemplate(sessionFactory);
template.setCharset("UTF-8");
template.setBeanFactory(beanFactory);
template.setAutoCreateDirectory(true);
template.setRemoteDirectoryExpression(remoteDirectoryExpression);
template.setFileNameExpression(fileNameExpression);
template.setTemporaryFileSuffix(".writing");
template.setUseTemporaryFileName(true);
template.afterPropertiesSet();
但是,我在fileNameExpression中放置的任何文字都将被忽略,上传的文件将始终命名为与原始文件相同的。结果始终与以下情况相同:

Expression fileNameExpression = parser.parseExpression("payload.name");

为什么呢?我遗漏了什么吗?

setFileNameExpression
仅用于
GET
操作


尝试改用
setFileNameGenerator
。这一个正好用于
PUT

javadocs留下了一些需要改进的东西-我打开了一个。明白了。我认为可以直接使用表达式来生成远程文件名。作为xml配置的等价物:远程文件名生成器表达式=“payload.getName()+”\u foo“。谢谢你的澄清。