2

すべてのユーザーの役割に基づいてメニューを制御するセッションを設定しました...たとえば、これがあります

<c:set var="role" scope="session" value='<%=((Long) session.getAttribute("role")).longValue()%>' />
<c:if test="${role == 121}">
        <div id="menu">
            <span class="menu-header">Registration</span>
            <ul>
                <li><a href="${pageContext.request.contextPath}/registration/organization-registry">Organization Registry</a></li>


            </ul>
        </div>
    </c:if>

<div id="menu">
                <span class="menu-header">Directory</span>
                <ul>
                    <li><a href="">Organization</a></li>


                </ul>
            </div>

ログインせずにそのページに移動したい場合はどうすればよいですか? ログインせずにそのページに移動しようとしましたが、NullPointetExcepetion基本的にロールにセッションが保存されていないために発生しました。ユーザーがログインするときにすべてのセッションを設定します。ログインしていないときは、ロールを必要としないメニューを表示したい...たとえば、他の人が表示できる1つのリンクでそのページにリダイレクトします。

ログインしていないときにディレクトリ メニューを表示するにはどうすればよいですか?

4

1 に答える 1

1

<c:set>ラインを完全に取り除きます。あなたはそれを必要としません。EL${}はすでに、ページ、リクエスト、セッション、およびアプリケーション スコープで属性を検索しています。longValue()で呼び出したために NPE が発生しますnull

覚えておいてください: 古い学校のスクリプトレット <% %>と最新の EL を混在させてはいけません${}。それは意味がありません。混乱するだけです。

以下も参照してください。

于 2013-02-10T17:42:47.843 に答える