Spring SpEL in XML org.springframework.expression.ParseException: nessun suffisso finale '}' per l'espressione
Ho il seguente applicationContext-security.xmlin cui sto passando un elenco di filtri basati su alcune condizioni utilizzando SpEL ma la primavera non è in grado di analizzare l'espressione a causa della virgola.
<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>
Sopra, se vedi : 'httpSessionContextIntegrationFilter,logoutFilter', questo è quello che crea problemi. Se rimuovo la virgola e mantengo solo il filtro singolo, spring lo analizza bene.
Il valore di if-else di cui sopra viene consumato come a List<Filter>. Come dovrei farlo? portal.okta.login.enabledè solo una proprietà che accetta true o false.
Risposte
Secondo i documenti:
Gli elenchi possono essere espressi direttamente in un'espressione utilizzando la notazione {}.
Quindi questo dovrebbe farlo:
'{httpSessionContextIntegrationFilter,logoutFilter}'
Vedi 8.5.3 qui https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html