Прежде всего, похоже, что вы используете достаточно старую версию Spring.Было бы неплохо обновить хотя бы до 5.0.x
.
Во-вторых, не ясно, какой у вас xsltParameters()
.Вы скрываете это от нас, и мы полностью не знаем, что вы там делаете.Хотя мы можем предположить, что вы полностью основаны на этом методе:
@SafeVarargs
public static XsltPayloadTransformer xslt(Resource xsltTemplate,
Tuple2<String, Expression>... xslParameterMappings) {
Итак, вы создаете в этом xsltParameters()
массив Tuple2
.ХОРОШО.Итак, получите доступ к заголовку в параметре, необходимом для построения соответствующего выражения.
Я уверен, что это может быть FunctionExpression
:
.transform(Transformers.xslt(this.config.getSome().getXslt(),
Tuples.of("foo", new FunctionExpression<Message<?>>(m -> m.getHeader.get("int_val"))))).
То, что вы делаете с лямбдой, нельзя комбинировать с трансформатором с этой фабрики.
ОБНОВЛЕНИЕ
Вам нужно изменить xsltParameters()
, чтобы вместо него принять String
.Это будет просто представление необработанного выражения.
Итак, ваш CASE1 будет выглядеть так:
.transform(Transformers.xslt(this.config.getSome().getXslt(), xsltParameters("'1'")))
со значением буквальное выражение .
CASE2 будет выглядеть так:
.transform(Transformers.xslt(this.config.getSome().getXslt(), xsltParameters("headers.int_val")))