目次へ

9.3. presentタグ/notPresentタグ

これまでにも話してきました通り、present/notPresentタグはクッキー/HTTPヘッダー/リクエスト値/Java Beanのプロパティ値が存在するかどうかの判定を行います。presentタグは存在した場合にボディ部を実行し、notPresentタグは存在しなかった場合に実行します。まず以下の属性を用いて、判定する対象を特定します。

属性名 必須 スクリプト
可能
説明

name

 

Java Beanをスコープから検索するためのキー。property属性が省略された場合には、この値で検索されたJava Beanが判定対象となります。

property

  判定対象となるJava Beanのプロパティ。
scope   Java Beanが存在するスコープを指定。指定しなかった場合は、全てのスコープから検索されます。
cookie   判定対象となるクッキーのパラメータ名。

parameter

  判定対象となるHTTPリクエストのパラメータ名。
header   判定対象となるHTTPヘッダーのパラメータ名。

以下の例は、HTTPリクエストのパラメータとしてopがあるかどうかによって、出力される内容が変わります。存在する場合はopの値が、存在しない場合はその旨のメッセージが出力されます。

...
<logic:notPresent parameter="op">parameter op does not exist.</logic:notPresent><br>
<logic:present parameter="op">
  parameter op is <bean:parameter id="op" name="op" /><%=op %>
</logic:present><br>
...

またpresentタグ/notPresentタグは、認証に関する機能も提供しています。

属性名 必須 スクリプト
可能
説明
user   認証されたユーザの名前が指定の値であった場合に、ボディ部が実行されます。
role   認証されたユーザが指定のRoleに関連付けられている場合、ボディ部が実行されます。カンマで区切って、複数のRoleを指定する事も可能です。

以下はユーザのRoleがadminまたはmanagerでない場合に、メッセージを出力します。

...
<logic:notPresent role="admin,manager">you can't access this site</logic:notPresent>
...

(実習課題2)

以下のWebアプリケーションを作成しなさい。

  • クッキーにユーザの名前が登録されていたらその名前を表示する。
  • 登録されていなかったら、名前を登録するための入力フォームを表示する。
  • フォームに入力された名前が空文字列だった場合には、エラーメッセージを表示するようにする事。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp