Spring SpEL в XML org.springframework.expression.ParseException: нет конечного суффикса '}' для выражения
У меня ниже, applicationContext-security.xmlв котором я передаю список фильтров на основе некоторого условия с использованием SpEL, но spring не может проанализировать выражение из-за запятой.
<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
<sec:filter-chain-map path-type="ant">
<sec:filter-chain pattern="/**"
filters="#{ '${portal.okta.login.enabled}' ? 'httpSessionContextIntegrationFilter' : 'httpSessionContextIntegrationFilter,logoutFilter' }" />
</sec:filter-chain-map>
</bean>
Если вы видите выше : 'httpSessionContextIntegrationFilter,logoutFilter', это создает проблемы. Если я удалю запятую и оставлю только один фильтр, spring разбирает его нормально.
Значение приведенного выше if-else используется как List<Filter>. Как мне это сделать? portal.okta.login.enabledэто просто свойство, которое принимает либо истину, либо ложь.
Ответы
Согласно документам:
Списки могут быть выражены непосредственно в выражении с использованием нотации {}.
Итак, это должно сработать:
'{httpSessionContextIntegrationFilter,logoutFilter}'
См. 8.5.3 здесь https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html