我有一个骆驼适配器,其CXF指定用于这样配置的输入(来自):
<Form validated>
<Form.Group>
<Form.Label>Text Input</Form.Label>
<Form.Control required type="text" value="foo"/>
</Form.Group>
<Form.Group>
<Form.Label>Invalid Dropdown Input</Form.Label>
<Form.Control required as="select" value={''}>
<option key={'empty'} value={''}>...</option>
<option key={'1'} value={'1'}>1</option>
<option key={'2'} value={'2'}>2</option>
</Form.Control>
</Form.Group>
<Form.Group>
<Form.Label>Valid Dropdown Input</Form.Label>
<Form.Control required as="select" value={'2'}>
<option key={'empty'} value={''}>...</option>
<option key={'1'} value={'1'}>1</option>
<option key={'2'} value={'2'}>2</option>
</Form.Control>
</Form.Group>
</Form>
SOAP输入在有效负载中包含以下元素:
console_scripts
但是输出看起来像这样:
<camel-cxf:properties>
<entry key="dataFormat" value="PAYLOAD"/>
<entry key="allowStreaming" value="true"/>
<entry key="relayHeaders" value="false"/>
</camel-cxf:properties>
我知道这不是无效的。 XML不需要转义>。强烈建议“仅”使用(有关详细信息,请参见this SO question)。
但我不希望更改有效负载。 CXF应该只切断SOAP信封,并将所有内容保持原样。我可以禁用XML有效内容的解析/重新序列化吗?
答案 0 :(得分:1)
看看添加一个拦截器(作为接收的最后一步),或者您可以在cxf步骤之后将其传递到骆驼路线的处理器中并修改正文。
答案 1 :(得分:1)
您可以将dataFormat更改为MESSAEG,这样,camel-cxf将不会与XML有效负载或附件联系。 顺便说一句,您不能使用此dataFormat访问SOAP Header。
答案 2 :(得分:0)
我的一位同事发现,问题似乎出在其他组件如何与CXF的 CachedCxfPayload 输出对象一起工作。 CXF之后的处理器似乎进行了不必要的转换。
我们的解决方案是在传递CXF的输出之前将其转换为字符串:
<convertBodyTo type="java.lang.String"/>
现在没有转换了。