9. Logicタグライブラリ2
Struts 9章 Logicタグライブラリ2
9.1. matchタグ/notMatchタグ
matchタグ/notMatchタグは、クッキー/HTTPヘッダー/HTTPリクエスト値/Java Beanのプロパティ値が指定した文字列を含んでいるかどうか判定するタグです。matchタグは含んでいた場合にタグのボディ部を処理し、notMatchタグは含んでいなかった場合に処理します。まず以下の属性を指定し、比較対象を特定します。
属性名 | 必須 | スクリプト 可能 |
説明 |
---|---|---|---|
name |
○ |
Java Beanをスコープから検索するためのキー。property属性が省略された場合には、この値で検索されたJava Beanが比較対象となります。 |
|
property |
○ | 比較対象となるJava Beanのプロパティ。 | |
scope | ○ | Java Beanが存在するスコープを指定。指定しなかった場合は、全てのスコープから検索されます。 | |
cookie | ○ | 比較対象となるクッキーのパラメータ名。 | |
parameter |
○ | 比較対象となるHTTPリクエストのパラメータ名。 | |
header | ○ | 比較対象となるHTTPヘッダーのパラメータ名。 |
文字列の指定はvalue属性で行います。またlocation属性で、指定した文字列が含まれなければならない位置を指定する事も可能です。
属性名 | 必須 | スクリプト 可能 |
説明 |
---|---|---|---|
value |
○ |
○ |
文字列を指定。 |
location | ○ |
「start」を指定した場合は、指定した文字列は先頭に表れなければならない。 |
以下はlocation属性による違いを示した例です。
... <logic:match header="Host" value="techscore"> Host is ...techscore... </logic:match><br> <logic:match header="Host" value="techscore" location="start"> Host is techscore... </logic:match><br> <logic:match header="Host" value="techscore" location="end"> Host is ...techscore </logic:match> ...
このサイトは「www.techscore.com」ですので、一番目のタグだけが実行され、
Host is ...techscore... <br> <br> <br>
と出力されます。
ところでmatchタグもnotMatchタグも、いずれも比較対象となる値が存在する事を前提としています。存在しない場合には実行時にエラーが発生します。例えば上の例で、HTTPヘッダーにHostパラメータが存在しないような場合です。比較対照の値が存在するかしないかの判定には、後で説明するpresentタグ/notPresentタグを用います。
(実習課題1)
以下のWebアプリケーションを作成しなさい。
- HTTPヘッダーのUser-Agentの値を表示する事。
- ブラウザの種類をUser-Agentの値によって判別し、表示するテキストを変えるようにする事。
- Strutsのタグライブラリで極力、実現するようにする事。