Spring SpEL dans XML org.springframework.expression.ParseException: pas de suffixe de fin '}' pour l'expression
J'ai ci-dessous applicationContext-security.xmldans lequel je passe une liste de filtres basés sur une condition utilisant SpEL mais spring n'est pas capable d'analyser l'expression en raison de la virgule.
<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>
Ci-dessus, si vous voyez : 'httpSessionContextIntegrationFilter,logoutFilter', c'est celui qui crée des problèmes. Si je supprime la virgule et que je ne garde qu'un seul filtre, le ressort analyse bien.
La valeur de if-else ci-dessus est consommée sous forme de List<Filter>. Comment dois-je procéder? portal.okta.login.enabledest juste une propriété qui prend soit vrai soit faux.
Réponses
Selon la documentation:
Les listes peuvent être exprimées directement dans une expression en utilisant la notation {}.
Donc, cela devrait le faire:
'{httpSessionContextIntegrationFilter,logoutFilter}'
Voir 8.5.3 ici https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html