さまざまなセッション属性の名前を定義するクラスがあります。
class Constants {
public static final String ATTR_CURRENT_USER = "current.user";
}
これらの定数を JSP 内で使用して、これらの属性の存在をテストしたいと思います。たとえば、次のようになります。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.example.Constants" %>
<c:if test="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}">
<%-- Do somthing --%>
</c:if>
しかし、構文を正しく取得できないようです。また、上記のかなり長いテストを複数の場所で繰り返さないようにするために、結果をローカル (ページ スコープ) 変数に割り当て、代わりにそれを参照したいと思います。でこれを行うことができると信じて<c:set>
いますが、正しい構文を見つけるのに苦労しています。
更新:以下の提案に加えて、私は試しました:
<c:set var="nullUser" scope="session"
value="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}" />
うまくいきませんでした。代わりに、定数のリテラル値を置き換えてみました。ページのコンテンツにも定数を追加したので、ページがレンダリングされているときに定数の値を確認できました
<c:set var="nullUser" scope="session"
value="${sessionScope['current.user'] eq null}" />
<%= "Constant value: " + WebHelper.ATTR_CURRENT_PARTNER %>
これはうまく機能し、期待値「current.user」をページに出力しました。String リテラルの使用が機能する理由を説明するのに途方に暮れていますが、2 つが同じ値を持っているように見える場合、定数への参照は機能しません。ヘルプ.....