2012-02-22 10 views
0

私は春のセキュリティ3.0.6を使用しています。次の例外がスローされ春のセキュリティ:秒:authorizeタグはストリームを閉じた例外を与えます

<sec:authorize access="hasRole('ROLE_PREVIOUS_ADMINISTRATOR')"> 
         <a href="<s:url value='/exitUser' />"> 
          Switch back to your own role</a> 
</sec:authorize> 

:次のJSPスニペットは犯人である

Struts has detected an unhandled exception: 
# Messages:  Stream closed 
File: org/apache/jasper/runtime/JspWriterImpl.java 
Line number: 210 
Stacktraces 
java.io.IOException: Stream closed 

    org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:210) 
    org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115) 
    org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:177) 
    org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:915) 
    org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:652) 
    org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:123) 
    org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) 
    com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277) 
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) 
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498) 
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434) 

私は成功し、他のユーザーをロールに切り替えているし、今に切り替えるためのリンクを表示しようとしている彼彼が実際に交換した場合に限ります。ユーザーがロールを切り替えた場合、ROLE_PREVIOUS_ADMINISTRATORがあることがわかりますので、上記を行っています。

私は経由タグライブラリが含まれている:私は私の春のセキュリティ、XMLで

<http use-expressions="true"> 

を指定していなかった

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> 
+1

タグこのエラーは通常authorize(または任意の)で使用される式を評価するには根本的なエラーを隠しているようです。 tomcatログを調べて見つけます。 –

答えて

0

。これを行った後に、傍受URLをに変更して、の式を使用しての値を受け入れると、エラーは表示されなくなりました。しかし、簡単なテストアプリケーションでエラーを再現できませんでした。

編集:私はこのエラーを発見した別のインスタンスは、私がauthorizeタグにカスタムにSPEL式を使用していたときだった、と表現の取り扱い方法でNullPointerExceptionがありました。

基本的に、あなたが表示されない別の根本的なエラーがなければならない

関連する問題