Spring SpEL ใน XML org.springframework.expression.ParseException: ไม่มีคำต่อท้าย '}' สำหรับนิพจน์
Oct 12 2020
ฉันมีด้านล่างapplicationContext-security.xmlซึ่งฉันกำลังส่งรายการตัวกรองตามเงื่อนไขบางอย่างโดยใช้ SpEL แต่ฤดูใบไม้ผลิไม่สามารถแยกวิเคราะห์นิพจน์เนื่องจากลูกน้ำ
<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'นี่คือสิ่งที่สร้างปัญหา ถ้าฉันเอาลูกน้ำออกและเอาแต่ฟิลเตอร์เดี่ยวสปริงแยกวิเคราะห์ได้
ค่าของ if-else ข้างต้นถูกใช้เป็นไฟล์List<Filter>. ควรจะไปเกี่ยวกับเรื่องนี้อย่างไร? portal.okta.login.enabledเป็นเพียงคุณสมบัติที่รับว่าจริงหรือเท็จ
คำตอบ
mikeb Oct 12 2020 at 16:13
ตามเอกสาร:
รายการสามารถแสดงได้โดยตรงในนิพจน์โดยใช้สัญกรณ์ {}
สิ่งนี้ควรทำ:
'{httpSessionContextIntegrationFilter,logoutFilter}'
ดู 8.5.3 ที่นี่ https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html