4

Spring Securityでログインに失敗すると、例外がスローされ、次のようにJSPに表示されます。

<c:if test="${not empty error}">
    <div class="errorblock">
        Your login attempt was not successful, try again.<br /> Caused :
        ${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
    </div>
</c:if>

現在、JSPからThymeleafに変更して同じことを行おうとしていますが、ログインに失敗すると、sessionScope変数がnullのように見えます。

<div th:if="${error}" class="errorblock" th:text="'testing ' + ${sessionScope}">

</div>

これは印刷されtesting nullます。ビューリゾルバーをJSPに戻すと、うまく機能します。私は何か間違ったことをしていると思います。助言がありますか?

4

3 に答える 3

19

sessionScopeThymeleafでは、トークン名を使用してセッション変数にアクセスすることはありません。代わりに使用sessionします。したがって、次のようなことを行う必要があります。

<div class="error" 
     th:if="${param.login_error}"
     th:with="errorMsg=${session["SPRING_SECURITY_LAST_EXCEPTION"].message}">
  Your login attempt was not successful, try again.<br />
  Reason: <span th:text="${errorMsg}">Wrong input!</span> 
</div>

StackOverflowのルールによる免責事項:私はThymeleafの作成者です。

于 2012-12-27T00:04:05.927 に答える
5

2番目は最初と同じではありません。sessionScope変数名なしで暗黙のEL変数を呼び出すと、何が得られるのかわかりません。どうですか:

${sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message}

その上、あなたのページがセッションに参加しましたか?JSPにsessionは、セッションスコープがELを介して利用可能かどうかを制御するディレクティブがあります。

<%@ page session="false|true" %>
于 2012-12-26T21:33:10.173 に答える
0

以下は、Thymeleaf3.0およびBootstrap4.1で動作します

<div th:if="${param.error} and ${session}" th:with="errorMsg=${session['SPRING_SECURITY_LAST_EXCEPTION']}">
     <div class="alert alert-dismissible alert-danger error">
          Reason: <span th:text="${errorMsg}">Demo Invalid input</span>
     </div>
</div>
于 2018-07-02T08:59:32.540 に答える