Spring Integration中使用的SpEL表达式中的类型转换

时间:2013-01-24 14:48:16

标签: java casting type-conversion spring-integration spring-el

我需要为每个消息添加一个前缀。我可以使用方法来做,但是想让变换器处理它。

问题是消息需要以控制代码字符作为前缀,我无法真正输入,然后是一些额外的文本。

例如:

private final static char EOT = (char) 4;
private final static char STX = (char) 2;
private final static char ETX = (char) 3;
private final static String additionalText = "          -0000 9305";

请参阅:http://en.wikipedia.org/wiki/C0_and_C1_control_codes

然后该消息的前缀为:

EOT + additionalText + ETX;

但是,我找不到如何在变换器中使用的SpEL表达式中对控制代码进行类型转换:

<int:transformer
    id="prefixAdder"
    input-channel="initialMessage"
    output-channel="prefixAdded"
    expression="'#{(char) 4}' + '          -0000 9305' + '#{(char) 3}' + payload"/>

1 个答案:

答案 0 :(得分:0)

SpEL不直接支持;您可以添加一个<bean/>作为控制数据的前缀,并使用expression="@prefixer.prefixPreamble(payload)"

public class Prefixer {
    public String prefix(String payload) {
        return prefix + payload;
    }
}