2017-08-24 6 views
0

私は私はこのようなセッションVAR名を定義しているJavaのConstant.javaファイルがあります。JSTLの動的削除タグ

session.setAttribute(Constant.ATT_SESSION_MESSAGE, "this is the content of the var I wan't to display on the page"); 
:私はセッションVARを定義するには、以下を使用して、サーブレットファイルで

package com.pakageName; 

public class Config { 
    // name of sessions var 
    public static final String ATT_SESSION_USER = "session_user"; 
    public static final String ATT_SESSION_MESSAGE = "session_message"; 
    ... 
} 

をだから私はsessionScoのコンテンツを取得することができるよ

<%@ page import="com.pakageName.Config" %> 

を:

Constant.javaファイルを使用して、私のJSPファイルに含まれていますpe var with:

// get the content of the session var 
${sessionScope[Constant.ATT_SESSION_MESSAGE]} 
// which return the same result as 
${sessionScope.session_message} 

問題は、定数var値を持つremoveタグを使用してこれらのセッションvarを削除するにはどうすればよいですか?

任意のアイデアを、私は次のことを試してみたが、var属性はEL式を受け入れていない...

// throw exception because var attribute doesn't accept el 
<c:remove var="${sessionScope[Constant.ATT_SESSION_MESSAGE]}" scope="session" /> 
<c:remove var="${Constant.ATT_SESSION_MESSAGE}" scope="session" /> 
// don't remove anything 
<c:remove var="Constant.ATT_SESSION_MESSAGE" /> 
// work but the name is hard coded 
<c:remove var="session_message" scope="session" /> 

+0

'? –

+0

いいえ、これは定数varを削除しようとしますが、その名前がConstant.ATT_SESSION_MESSAGEの内容であるセッション変数ではありません(varは "session_message"と呼ばれます) –

+0

申し訳ありませんが間違っています。定数を削除しますか?私はあなたが何をしているのか分かりません。 https://www.tutorialspoint.com/jsp/jstl_core_remove_tag.htm –

答えて

0

私が見ることのできる問題は、実際にセッション変数を最初に設定していないことです。あなたがしているのは、公の変数を呼び出すだけです。だからあなたがセッション変数を削除していると思うときは、実際には何もしていません。それがなぜ続くのか。

session.setAttribute("user", Constant.ATT_SESSION_MESSAGE); 

またはJSTLと::

<c:set var="user" value="${Constant.ATT_SESSION_MESSAGE}" scope="session" /> 

その後でそれを削除します。

<c:remove var="user"/> 
+0

私はすでにサーブレットでセッション変数を設定しています。 session.setAttribute( "message sample"); 私は削除タグを使用することはできません理由です $ {sessionScopeと[Constant.ATT_SESSION_MESSAGE]} を使用してJSPページでそれを呼び出して、VARの名前は全ての –

+0

まず、別のファイルで定義されていますセッション変数を設定すると、引用符が最初に表示されます。次にセッション変数を設定すると、引用符で書いたものだけでアクセスできます。したがって: "session.getAttribute(" messageSample ");"。変数にスペースを入れることはできません... –

+0

私は何をしようとしているのかを少し説明するために投稿を編集しました:messageSampleはsession_messageという名前のセッションvarに格納されたvarの内容です。私に "messageSample"を返すsession.getAttribute(Constant.ATT_SESSION_MESSAGE)でvarにアクセスする –

0

私はへの道を見つけました

は、実際に最初のセッション変数を設定してみてくださいjspスクリプトレットで欲しいものを達成してください...

<% session.removeAttribute(Config.ATT_SESSION_MESSAGE); %> 

jstlで同じ結果を得る方法はありませんか?