我正在创建一个基于文件名将文件传输到新位置的服务。问题是,即使第一个when为假(文件名不是以“ START”开头),也不会到达第二个else语句。另外,from uri具有delete = true选项,可能会影响某些内容。结果是该文件被删除。
<route id="outgoing" errorHandlerRef="outgoingDeadLetterErrorHandler">
<from uri="OutgoingSource"/>
<choice>
<when>
<simple>${file:name} starts with 'START'</simple>
<convertBodyTo type="java.lang.String"/>
<choice>
<when>
<xpath>/File/Header/@x = 'X'</xpath>
<to ref="OutgoingErrorDestination"/>
</when>
<when>
<xpath>/Header/@y = 'Y'</xpath>
<to ref="OutgoingDestination"/>
</when>
<otherwise>
<to ref="OutgoingErrorDestination"/>
</otherwise>
</choice>
</when>
<otherwise>
<to ref="OutgoingErrorDestination"/>
</otherwise>
</choice>
</route>
答案 0 :(得分:0)
file:name相对于起始目录(即file:name = test \ hello.txt)
如果只想测试文件名,则应使用file:onlyname.noext
<simple>${file:onlyname.noext} starts with 'START'</simple>