我正在使用Spring集成。我得到一個字符串(有效載荷)象下面這樣: r, n, t等效的彈簧表達式語言
<Element>
<Sub-Element>5</Sub-Element>
</Element>
我需要測試,如果上面的字符串與<Element><Sub-Element>
開始這實際上是<Element>\r\n <Sub-Element>.
<int:recipient-list-router id="customRouter" input-channel="routingChannel">
<int:recipient channel="channel1" selector-expression="payload.startsWith('<Element><Sub-Element>')"/>
<int:recipient channel="channel2" selector-expression="!payload.startsWith('<Element><Sub-Element>')"/>
</int:recipient-list-router>
理想情況下,第一路由器應該通過測試,但在這種情況下,它的失敗。任何人都可以幫助我找出什麼是\ r \ n等的SpEL等價物?
selector-expression是否理解\ compile「\ r \ n」? – Suvasis
否;就像我說的那樣,SpEL無法逃避這些角色,但是當他們在正則表達式中時,他們不會被SpEL解析,他們被正則表達式引擎解析。這就是爲什麼這是有效的。 –
我的正則表達式爲「(?s) \\ s * (。*)」。我在selector-expression的代碼中嘗試了下面的代碼。選擇器表達式=「有效載荷.getBufferData()匹配('(?s)<元素> \\ s * <Sub>(。*)')」給出的預期爲:org.springframework.expression.spel.SpelParseException :EL1044E :(pos 61):意外地用完了輸入 –
Suvasis