我需要为每个消息添加一个前缀。我可以使用方法来做,但是想让变换器处理它。
问题是消息需要以控制代码字符作为前缀,我无法真正输入,然后是一些额外的文本。
例如:
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"/>
答案 0 :(得分:0)
SpEL不直接支持;您可以添加一个<bean/>
作为控制数据的前缀,并使用expression="@prefixer.prefixPreamble(payload)"
。
public class Prefixer {
public String prefix(String payload) {
return prefix + payload;
}
}