【问题标题】:Typecasting in SpEL expresssion used in Spring IntegrationSpring Integration 中使用的 SpEL 表达式中的类型转换
【发布时间】:2013-01-24 14:48:16
【问题描述】:

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

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

例如:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我已经在使用转换器的 ref/method 属性,看起来它们基本上做同样的事情。我只是想在没有任何额外 bean 的情况下添加前缀。
    猜你喜欢
    • 2011-09-29
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2020-03-03
    相关资源
    最近更新 更多