Spring SpEL en XML org.springframework.expression.ParseException: sin sufijo final '}' para la expresión
Tengo el siguiente applicationContext-security.xmlen el que paso una lista de filtros basada en alguna condición usando SpEL pero Spring no puede analizar la expresión debido a la coma.
<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>
Arriba, si ven : 'httpSessionContextIntegrationFilter,logoutFilter', este es el que está creando problemas. Si elimino la coma y mantengo solo un filtro, Spring lo analiza bien.
El valor del if-else anterior se consume como List<Filter>. ¿Cómo debo hacerlo? portal.okta.login.enabledes solo una propiedad que toma verdadero o falso.
Respuestas
Según los documentos:
Las listas se pueden expresar directamente en una expresión usando notación {}.
Entonces esto debería hacerlo:
'{httpSessionContextIntegrationFilter,logoutFilter}'
Ver 8.5.3 aquí https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html