Spring3.0で問題なく動作していたプロジェクトがありました。依存関係を制御するためにMavenに移動し、Spring3.1.2jarとSpringsecurity3.1.1jarに移動しました。
セキュリティtaglib(例)の使用を含むJSPにアクセスしようとすると、次のエラーが発生します。
javax.servlet.ServletException: javax.servlet.jsp.JspException: java.io.IOException: No visible WebSecurityExpressionHandler instance could be found in the application context. There must be at least one in order to support expressions in JSP 'authorize' tags.
私のセキュリティコンテキストでは、次のようになります。
<http auto-config="true" use-expressions="true" create-session="ifRequired"
私の古いプロジェクトから:
<beans:bean id="expressionHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler" />
プロジェクト用に持っているパッケージにそのクラスが見つからなかったので、それは私が試したクラスの移動である可能性があると考えました。
<beans:bean id="expressionHandler" class="org.springframework.security.web.access.expression.WebSecurityExpressionHandler" />
これは私に同じエラーを与えます。
現時点で構成したSpring-securityの依存関係:spring-security-core-3.1.1 spring-security-taglibs-3.1.1 spring-security-acl-3.1.1 spring-security-config-3.1.1 spring-security -web-3.1.1
'use-expressions = true'が必要なものをすべて含むjarファイルがありませんか?