如何更改标题元素

时间:2014-12-16 11:05:17

标签: spring spring-integration

我有以下代码段:

 <int-file:inbound-channel-adapter id="filteredFiles"
    directory="#{controllerConfig['CYCLE'].params['SEMAPHORE_DIR']}"
    channel="semaphoreChannel" filename-pattern="*.xml" prevent-duplicates="false">
    <int:poller max-messages-per-poll="1" cron ="#{controllerConfig['CYCLE'].controllerTimer}"/>
</int-file:inbound-channel-adapter> 

... 后来在流程中有一个标题更丰富:

<int:header-enricher id="Channel Name Setter">
    <int:header name="channel.id" value="CYCLE"/>
    <int:header name="flow.id" overwrite="true" value="#{T(hu.telekom.fdl.util.TimeBasedUUIDGenerator).generateId()}"/>
</int:header-enricher>

问题是虽然我使用了overwrite =&#34; true&#34;当入站通道适配器读取第二个文件时, flow.id 似乎没有变化。

谢谢,

1 个答案:

答案 0 :(得分:1)

在上下文初始化期间,仅对表单#{...}的表达式进行一次计算。您需要使用运行时表达式:

<int:header name="flow.id" overwrite="true" expresion="T(hu.telekom.fdl.util.TimeBasedUUIDGenerator).generateId()"/>

即。使用expression=并移除#{}

如果标题已出现在对于更丰富的入站消息中,则只需overwrite="true"