gpt4 book ai didi

java - 访问 Camel Freemarker ftl 中的 RequestParameters

转载 作者:行者123 更新时间:2023-12-01 13:31:13 28 4
gpt4 key购买 nike

我正在使用运行camel-freemarker版本2.8.0.fuse-06-11的Servicemix 4.4.1。在我的 ftl 文件中,我需要根据请求 url 中是否存在查询字符串来使用条件路由。

例如:

如果 url 附加有查询字符串“?wsdl” --> 那么 ftl 应该路由到不同的处理器,而不是正常情况。为了实现这一点,我在 ftl 文件中进行了以下配置。

<choice>
<when>
<#list RequestParameters?keys as key>
<#if key == '_wsdl'>
<to uri="wsdlProviderProcessor">
</#if>
</#list>
</when>
<otherwise>
//do something else here
</otherwise>
</choice>

但是我的问题是,在构建编译 ftl 以创建路由 xml 时,出现以下异常。

程序员的 Java 回溯:

freemarker.core.InvalidReferenceException: Expression RequestParameters is undefined on line 216, column 40 in ftl/META-INF/spring/route-context.xml.ftl.
at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:135)
at freemarker.core.BuiltIn$keysBI._getAsTemplateModel(BuiltIn.java:667)
at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.Environment.process(Environment.java:199)
at freemarker.template.Template.process(Template.java:237)

据我了解,它无法访问 RequestParameters 变量。我尝试使用多种方法,包括“request”和 ${RequestParameters['_wsdl']} 等变量,如以下链接所示。然而,每次我的代码出错时都会出现相同的错误消息。

对上述问题的任何见解都将受到高度赞赏。

最佳答案

如果没有文档可以提供帮助,请尝试:

<#list .data_model?keys as varName>
${varName}
</#list>

如果它有效并且返回所有变量,那么它是非常特定于数据模型的。因此,如果失败,您可以在 freemarker.template.Template.process 处放置一个断点,以查看作为数据模型传递给模板的内容。

关于java - 访问 Camel Freemarker ftl 中的 RequestParameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21555174/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com