Struts 9章 Logicタグライブラリ2
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アプリケーションを作成しなさい。
- クッキーにユーザの名前が登録されていたらその名前を表示する。
- 登録されていなかったら、名前を登録するための入力フォームを表示する。
- フォームに入力された名前が空文字列だった場合には、エラーメッセージを表示するようにする事。