XML org.springframework.expression.ParseException içinde Spring SpEL: İfade için '}' son eki yok

Oct 12 2020

Aşağıda olması applicationContext-security.xmlİçinde SPEL ama yayı kullanan bazı koşula göre filtre listesi geçirerek nedeniyle virgül ifadesini ayrıştırmak mümkün değildir.

    <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>

Yukarıda görürseniz : 'httpSessionContextIntegrationFilter,logoutFilter', sorun yaratan budur. Virgülü kaldırır ve yalnızca tek bir filtreyi saklarsam, yay onu iyi ayrıştırır.

Yukarıdaki if-else değeri, bir List<Filter>. Nasıl devam etmeliyim? portal.okta.login.enabledsadece doğru veya yanlışı alan bir özelliktir.

Yanıtlar

mikeb Oct 12 2020 at 16:13

Dokümanlara göre:

Listeler, {} gösterimi kullanılarak doğrudan bir ifadede ifade edilebilir.

Yani bunu yapmalı:

'{httpSessionContextIntegrationFilter,logoutFilter}'

Burada 8.5.3'e bakın https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html