1

我需要为每条发出的消息添加一个前缀。我可以使用一种方法来做到这一点,但只想让变压器处理它。

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

例如:

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"/>
4

1 回答 1

0

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

public class Prefixer {
    public String prefix(String payload) {
        return prefix + payload;
    }
}
于 2013-01-24T15:51:07.970 回答