<c:remove>
xmlns:c="http://java.sun.com/jsp/jstl/core"
説 明
スコープに格納されている変数を除去します。このタグの動作は
pageContext.removeAttribute(var,scope)
を実行するのと同じです。
一時的に使用する変数は通常 page スコープで格納するため
<c:remove> を明示的に呼び出す必要はありません。一時変数でもオブジェクトが大きくてなるべく早く切り離したい場合や、セッションなどの特定のスコープのオブジェクトを除去したい場合などに使用します。
参照:
<c:set> 属 性
optional
削除対象の変数が格納されているスコープです。このスコープ以外の変数については名前が同じであっても除去されません。
scope 属性が省略されると
PageContext#removeAttribute(var)
が呼び出されます。この場合 page, request, session,
application の順にスコープを検索し、最初に見つかった変数だけを削除します
(場合によってこの動きは意図しないスコープの変数を削除するため注意する必要があります)。
使用例
新しく変数を設定します。実行結果は「hello, world」となります (未設定の null 値は何も出力されないため)。
スコープ内の既存の変数を上書きします。実行結果は「1 2」となります。
Bean のプロパティに値を設定します (
JSP
<c:out value="${foo}" />
<c:set var="foo" value="hello, world" />
<c:out value="${foo}" />
JSP
<% pageContext.setAttribute("foo", "1", PageContext.PAGE_SCOPE); %>
<c:out value="${foo}" />
<c:set var="foo" value="2" />
<c:out value="${foo}" />
<jsp:include> 先で使用する変数をあらかじめ設定しておきたい場合には
request スコープを使用します。
JSP
<c:set var="foo" value="100" scope="request" />
<jsp:forward page="page.jsp" flush="true" />
// page.jsp
<c:out value="${foo}" />
Map に値を格納します。出力結果は「{bar=2}」となります。
JSP
<% pageContext.setAttribute("foo", new HashMap()); %>
<c:set target="${foo}" property="bar" value="${1+1}" />
<c:out value="${foo}" />
Date が Bean かどうかは疑問ですが標準
API で適切な Bean が思いつかないので例として使用しています)。
Date#setYear(107), Date#setMonth(11) などが呼び出されて「2007/12/05 0:00:00 」という結果になります。
JSP
<% pageContext.setAttribute("foo", new Date()); %>
<c:set target="${foo}" property="year" value="107" />
<c:set target="${foo}" property="month" value="11" />
<c:set target="${foo}" property="date" value="5" />
<c:set target="${foo}" property="hours" value="0" />
<c:set target="${foo}" property="minutes" value="0" />
<c:set target="${foo}" property="seconds" value="0" />
<fmt:formatDate value="${foo}" type="both" />