Представьте, что вы хотите использовать последовательность символов \n в теле сообщения в apache-camel ... Думаю, самый простой способ выглядел бы так:

<setBody>
  <simple>one line\nsecond line</simple>
</setBody>

К сожалению, \n будет заменен переносом строки. И экранирование (\\n), похоже, не работает в теге <simple> ...

Есть идеи, как это решить?

PS: Я не могу использовать Java-DSL и также хотел бы избежать дополнительных зависимостей, таких как camel-groovy.

1
rdmueller 29 Фев 2016 в 16:05

3 ответа

Лучший ответ

Я нашел решение - шаблон скорости соответствует моим потребностям.

0
rdmueller 1 Мар 2016 в 20:49

Я просмотрел исходники верблюда для Простой язык. Есть защищенный allowEscape = true, но нет интерфейса для его установки. Конечно, вы можете унаследовать его и создать свой собственный язык Simple, переопределив это поле.

Из SimpleTokenizer, как вы видите, невозможно создать строку \n, используя текущую реализацию.

1
kasi 1 Мар 2016 в 20:14

Если вы хотите использовать постоянное тело, вы можете использовать язык constant, при этом не нужно экранировать \ n:

<setBody>
  <constant>one line\nsecond line</constant>
</setBody>

Я, вероятно, ошибаюсь, но я не думаю, что сегодня (v2.16.2) возможно цитировать обратную косую черту на простом языке, чтобы делать то, что вы хотите. Если я посмотрю на источники org.apache.camel.language.simple.SimpleTokenizer, \\ не обрабатывается как специальный символ. Возможно, есть какое-то обходное решение, но создать проблему должно быть легко // отправить PR с помощью этой функции.

2
Jérémie B 29 Фев 2016 в 14:23