我有一个非常简单的驼峰流来测试编写脚本。它看起来像这样:
from("file://C:test?fileName=in.xml").routeId("ContentbasedRouter")
.choice()
.when(toXML)
.script().javaScript("request.body.substring(3, 6)")
但是当我运行这个时,我得到了
org.apache.camel.builder.script.ScriptEvaluationException: Failed to evaluate: js: request.body.substring(3, 6). Cause: <eval>:1 TypeError: GenericFile[C:\test\input.csv] has no such function "substring"
我的意思是substring是一个有效的javascript函数,所以为什么它不识别这个?
答案 0 :(得分:0)
file
个消费者使用GenericFile
类型的主体发送交换,而不是String。如果您需要文件名,可以使用方法GenericFile.getFileName()
:
from("file://C:test?fileName=in.xml").routeId("ContentbasedRouter")
.choice()
.when(toXML)
.script().javaScript("request.body.fileName.substring(3, 6)")
如果您想要文件的内容,可以将其转换为字符串:
from("file://C:test?fileName=in.xml").routeId("ContentbasedRouter")
.convertBodyTo(String.class)
.choice()
.when(toXML)
.script().javaScript("request.body.substring(3, 6)")
请参阅GenericFile