1.ロジック:空
logic:empty タグは、空かどうかを判断するために使用されます。空の場合、タグ本体に埋め込まれたコンテンツが処理されます。このタグは次のような状況で使用されます。
Java オブジェクトが null の場合 String オブジェクトが "" の場合 java.util.Collection オブジェクトの isEmpty() が true を返す場合 java.util.Map オブジェクトの isEmpty() が true を返す場合 次のコード例は、ロジックを示しています。 empty タグは、コレクション person が空かどうかを決定します。
<logic:empty name="listForm" property = "persons">
<div>収集担当者が空です!</div>
</logic:empty>
2.ロジック:notEmpty
このタグの適用は、logic:empty タグのまったく逆です。
3.ロジック:等しい
このタグは等価比較演算子です。
例 1. ユーザーのステータス属性を比較して、それが 1 であるかどうかを確認します。1 の場合は、「有効」を出力します。
例 2. たとえば、上記の例の値が動的に取得される場合、struts はラベルのネストをサポートしていないため、bean:write を通じて出力する必要がありますが、EL を使用してこの問題を解決できます。
ロジック:等しい
ここで紹介するのは、logic:equal(=) タグだけではなく、次のような比較演算を完了するタグの一種です。
ロジック:等しい(=)
ロジック:notEqual(!=)
ロジック:greaterEqual(>=)
ロジック:lessEqual(<=)
ロジック:おろし金(>)
ロジック:lessThan(<)
このタイプのタグの使用法も同様です。logic:equal タグのみを紹介し、残りは任せます。
logic:equal は、それらが等しいかどうかを判断するために使用されます。等しい場合、タグ本体に埋め込まれたコンテンツが処理されます。このタグは次のような状況で使用されます。
このタグの cookie 属性で指定された cookie の値が、このタグの value 属性の値と等しいかどうかを比較します。
タグの header 属性で指定されたヘッダーの値が、タグの value 属性の値と等しいかどうかを比較します。
タグのname属性で指定したJSP Beanがタグのvalue属性と等しいか(property属性は出現しない)、またはタグのname属性で指定したJSP Beanのproperty属性値が等しいか比較します。タグのvalue属性と等しい 値が等しい。
(リクエスト内の) タグのパラメータ属性で指定されたパラメータ値が、タグの value 属性と等しいかどうかを比較します。
4. ロジック:notEqual
このタグの意味はlogic:equalと逆で、使い方は似ているので省略します。
5.ロジック:フォワード
このタグは、ページ ガイダンスを実装し、構成ファイルのグローバル フォワードを見つけるために使用されます。 struts-config.xml ファイルのグローバル リダイレクト
例: <logic:forward name="リダイレクト"/>
6. ロジック:greaterEqual
以上の比較演算子です。
例: 生徒のスコアが 60 以上の場合、「合格」を出力します。
<logic:greaterEqual name="student" property="scores" value="60">
合格
</logic:greaterEqual>
7. ロジック: より大きい
これは大なり比較演算子であり、その使用法はlogic:greaterEqual;と同じです。
8. ロジック:lessEqual
これは以下の比較演算子であり、その使用法はlogic:greaterEqual;と同じです。
9. ロジック:未満
これは「より小さい」比較演算子であり、その使用法はlogic:greaterEqual;と同じです。
10. ロジック:マッチ
このタグはオブジェクトが等しいかどうかを比較します。
logic:match タグは、部分文字列一致の問題を処理するために使用されます。
指定した値がタグと一致する場合、そのタグ本体のコンテンツが作成されます。このタグは次のような状況で使用されます。
指定された名前の Cookie がこのタグの値と一致するかどうかを確認します。
指定された名前のヘッダーがこのタグの値と一致するかどうかを確認します。
指定された名前のJSP Beanがタグの値と一致するかどうか、または指定された名前のJSP Beanのプロパティ属性値がタグの値と一致するかどうかを確認します。
リクエスト内の指定された名前のパラメータ値がタグの値と一致するかどうかを確認します。
次のコードは、logic:match タグの一般的な使用法を示しています。
例0。
次のようにコードをコピーします。
<logic:present header="ユーザーエージェント">
<logic:match header="ユーザーエージェント" value="MSIE 6.0">
MSIE 6.0
</logic:match>
</logic:present>
例1. リクエストスコープ内の name 属性に「hello」文字列が含まれているかどうかを確認します。
次のようにコードをコピーします。
<logic:match name="name"scope="request" value="hello">
<bean:write name="name"/> に「hello」文字列があります。
</logic:match>
例2. リクエストスコープの name 属性に開始文字列として「hello」が含まれているかどうかを確認します。
次のようにコードをコピーします。
<logic:match name="name"scope="request" value="hello" location="start">
<bean:write name="name"/> は、開始文字列として「hello」を受け取ります。
</logic:match>
例3。
次のようにコードをコピーします。
<logic:match header="user-agent" value="Windows">
Windows システムを実行している
</logic:match>
11. ロジック:notMatch
logic:notMatch タグの適用は、logic:match タグのまったく逆です。
このタグは、オブジェクトが異なるかどうかを比較するために使用されます。logic:match とは逆の意味を持ち、使い方は似ています。
12. ロジック:メッセージプレゼント
このタグは、ActionMessages/ActionErrors オブジェクトが存在するかどうかを判断するために使用されます。
logic:messagesPresent タグは、次の状況で使用されます。
リクエストスコープにはActionMessagesオブジェクトがあり、ラベルのproperty属性はActionMessagesのプロパティに対応します。
リクエストスコープには ActionErrors オブジェクトがあり、ラベルの property 属性は ActionErrors のプロパティに対応します。
String オブジェクトがあるので、それを ActionMessage に変換 (構築) してから、ActionMessages に追加します。
String Array オブジェクトがあり、配列内の各 String を ActionMessage に変換し、それを ActionMessages に追加します。
タグの message 属性の値が true の場合、Globals.MESSAGE_KEY がリクエスト スコープ内の Message を検索するキーとして使用されます。それ以外の場合は、name の値が検索のキーとして使用されます。は表示されません。デフォルト値は Globals.ERROR_KEY です。
次のコードは、logic:messagesPresent タグの一般的な使用法を示しています。
例1。
次のようにコードをコピーします。
<ロジック:メッセージ現在>
<ul>
<html:messages id="メッセージ">
<li><bean:write name="message"/></li>
</html:メッセージ>
</ul>
</logic:messagesPresent>
例2。
エラー情報が存在する場合は、それをすべて出力します。
次のようにコードをコピーします。
<logic:messagePresent property="error">
<html:messages property="error" id="err" >
<bean:write name="err"/>
</html:メッセージ>
</logic:messagePresent>
13. ロジック:メッセージが存在しない
ラベル「logic:messagesNotPresent」の適用は、「logic:messagesPresent」の適用のまったく逆です。
このタグは、ActionMessages/ActionErrors オブジェクトが存在するかどうかを判断するために使用されます。使用方法は、logic:messagePresent と似ています。
14. ロジック: 現在
このタグは、リクエスト オブジェクトによって渡されたパラメータが存在するかどうかを判断するために使用されます。
指定された値が表示される場合、タグはタグ本体のコンテンツを作成します。このタグは次のような状況で使用されます。
指定された名前の Cookie が存在するかどうかを確認します。
指定された名前のヘッダーが表示されるかどうかを確認します。
指定した名前のJSP Beanが表示されるかどうか、または指定した名前のJSP Beanのプロパティ属性が表示されるかどうかを確認します。
リクエストに指定された名前のパラメータが表示されるかどうかを確認します。
現在認証されているユーザーが指定されたセキュリティ ロールに関連付けられているかどうかを確認します。
現在認証されているサブジェクトが指定された名前を持つかどうかを確認します。
例 1. ユーザー オブジェクトとその name 属性の両方がリクエストに存在する場合、対応する文字列が出力されます。
次のようにコードをコピーします。
<logic:present name="user" property="name">
ユーザー オブジェクトとオブジェクトの name 属性の両方が存在します
</logic:present>
例2: 「hello」という名前の JavaBean がある場合、対応する文字列を出力します。
<logic:present name="こんにちは" >
「hello」という名前の JavaBean があります。
</logic:present>
例3。
<logic:present header="ユーザーエージェント">
ユーザーエージェントヘッダーを取得しました。
</logic:present>
例4。
次のコード例は、指定された名前の User-Agent を持つヘッダーが存在するかどうかをチェックするlogic:present タグを示しています。
<logic:present header="ユーザーエージェント">
あなたのブラウザは <bean:header id="userAgent" name="User-Agent"/> です。
<bean:write name="userAgent"/>。 <br/>
</logic:present>
15. ロジック:存在しない
このタグは、リクエストオブジェクトによって渡されたパラメータが存在しないかどうかを判断するために使用されます。意味はlogic:presentとは逆で、使用方法は同様です。
logic:notPresent タグの適用は、logic:present タグのまったく逆です。
16. ロジック: イテレータ
リストの値をコレクション (List、ArrayList、HashMap など) として表示するために使用されます。
logic:iterate タグはコレクションを反復するために使用されます。次のメソッドを使用して、このタグに対して反復されるコレクションを指定できます。
値がセットである実行時式を使用します。
name 属性を使用して、それ自体がコレクションである JSP Bean を参照します。
name 属性を使用して JSP Bean を参照します。この JSP Bean の属性の 1 つはコレクションです。この場合、プロパティを組み合わせてコレクションを指定できます。
上記のコレクションは次のとおりです。
オブジェクト型またはアトミック型の配列。
ArrayList、Vector を含む java.util.Collection の実装。
java.util.Enumeration の実装。
java.util.Iteratorの実装。
HashMap、Hashtable、TreeMap を含む java.util.Map の実装。
反復するコレクションに null 値が含まれる場合、logic:iterate はページ スコープ内にオブジェクトを作成しないため、特定の措置を講じる必要があります。通常は<logic:present>タグまたは<logic:notPresent>タグを使用して判断します。
以下は、オブジェクト参照関係と、ArrayList を反復するlogic:iterate の例のコードの一部です。
図 3. ロジック:反復におけるオブジェクトへの参照 図の人物リストは ListAction に入力されています。実際のアプリケーションでは、これらのデータはデータベースから取得されるだけです。具体的なコードは次のとおりです。
次のようにコードをコピーします。
public ActionForwardexecute(ActionMappingマッピング,ActionForm.form,
HttpServletRequest リクエスト、HttpServletResponse レスポンス) {
リストフォーム。リストフォーム = (リストフォーム)。
List<人> 人 = new ArrayList<人>();
人 person1 = 新しい人();
person1.setId("00001");
person1.setName("チャオ・チェン");
人 person2 = 新しい人();
person2.setId("00002");
person2.setName("李維芳");
人 person3 = 新しい人();
person3.setId("00003");
person3.setName("王偉");
people.add(person1);
people.add(person2);
people.add(person3);
listForm.setPeoples(人);
戻りマッピング.findForward("成功");
}
ラベルの出力結果は次のようになります。
00001-->チャオ・チェン
00002-->李維芳
00003-->王偉
例1. ユーザーリスト (empList) 内のユーザー名を 1 つずつ出力します。
<logic:iterate id="emp" name="empList">
<bean:write name="emp" property="name"/><br>
</logic:反復>
例2. ユーザーリストから1から始まる2人のユーザー名を出力します。
<logic:iterate id="emp" name="empList"indexId="index" offset="1" length="2">
<bean:write name="index"/>.<bean:write name="emp" property="name"/><br>
</logic:反復>
例3.logic:iteratorタグのネストされた例
<logic:iterate id="emp"indexId="index" name="empList">
<bean:write name="index"/>.<bean:write name="emp" property="name"/><br>
<logic:iterate id="address" name="emp" property="addressList" length="3" offset="1">
<bean:write name="アドレス"/><br>
</logic:反復>
</logic:反復>
17. ロジック:リダイレクト
このタグはページ リダイレクトを実装するために使用され、パラメータを渡すことができます。
例: <logic:redirect href="http://www.javaeye.com"/>
18. ロジック:フォワードとロジック:リダイレクトの比較
-------------------------------------------------- -------------------------------------------------- ----------
このため、ここでは、forward と redirect の 2 つのタグも紹介します。
これら 2 つのアクションの違いを見てみましょう。
転送はサーブレット内で実行されます。ブラウザはこのアクションをまったく認識せず、ブラウザがリロードされても元の URL は変更されず、単に元のリクエストが繰り返されます。
リダイレクトは 2 つのステップに分かれています。最初のステップでは、Web アプリケーションがブラウザーに 2 番目の URL を伝え、次にブラウザーが 2 番目の URL にリクエストを送信します。
リダイレクトは、ブラウザが 2 番目のリクエストを行う必要があるため、転送よりも遅くなります。また、最初のリクエスト スコープ (リクエスト スコープ) 内の Bean は 2 番目のリクエストには表示されないことに注意してください。
上記の違いを理解すると、logic:forward タグをいつ使用するか、logic:redirect タグをいつ使用するかがわかるようになります。
logic:forward タグは PageContext.forward() または HttpServletResponse.sendRedirect() を完了します。どちらの選択はコントローラーによって決定されます。 logic:redirect タグは HttpServletResponse.sendRedirect() を完了します。
logic:redirect タグを使用すると、html:link を使用するのと同じように、baseurl パラメータとクエリ パラメータを構築できます。興味があれば、html:link タグを参照してください。