【问题标题】:groovy retrieve def value and assign it to a particular placegroovy 检索 def 值并将其分配给特定位置
【发布时间】:2019-07-11 21:22:01
【问题描述】:

我是 groovy 的新手,我试图从 def 中检索值并将其放置到另一个 def 值中的特定位置。有人可以帮忙吗

def init = "Hello"
def msg = """<?xml version="1.0" encoding="UTF-8"?>
<report id="${init}"> -- here i want to replace with above value which is Hello>
    <exception code="1">Invalid request</exception>
</report>
"""

我期待低于输出

<?xml version="1.0" encoding="UTF-8"?>
<report id="Hello">
    <exception code="1">Invalid request</exception>
</report>

【问题讨论】:

  • 这应该可行...可行吗?如果没有,那怎么行不通?
  • 它在邮递员客户端中抛出了一些奇怪的字符..
  • 请提供更多错误细节并说明为什么它与Mule有关。
  • 如果您的替换而不是 Hello 是必须在 XML 中引用的东西,那么您会搞砸的。例如。 def init = '"&amp;&lt;&gt;' 会把事情搞砸的。所以请添加失败的例子——尤其是“邮递员中的怪异字符”

标签: groovy mule


【解决方案1】:

将 mimeType 设置为 application/xml 应该可以工作。

<flow name="xmlFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/groovy" doc:name="HTTP"/>
    <scripting:component doc:name="Groovy">
        <scripting:script engine="Groovy"><![CDATA[def init = "Hello"
    def msg = """<?xml version="1.0" encoding="UTF-8"?>
    <report id="${init}">
        <exception code="1">Invalid request</exception>
    </report>
    """]]></scripting:script>
    </scripting:component>
    <set-payload value="#[message.payloadAs(java.lang.String)]" mimeType="application/xml" doc:name="Set Payload"/>
</flow>

【讨论】:

  • 你能告诉我们如何从文件中引用 groovy 脚本吗?我已将 groovy 文件放在 src\main\resources
猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
相关资源
最近更新 更多