Struts-2-struts-result-types

提供:Dev Guides
移動先:案内検索

Struts 2-結果と結果タイプ

前述したように、 <results> タグは、Struts2 MVCフレームワークで view の役割を果たします。 アクションは、ビジネスロジックの実行を担当します。 ビジネスロジックを実行した後の次の手順は、 <results> タグを使用してビューを表示することです。

多くの場合、結果にはいくつかのナビゲーションルールが添付されています。 たとえば、アクションメソッドがユーザーの認証である場合、3つの可能な結果があります。

  • ログイン成功
  • ログイン失敗-間違ったユーザー名またはパスワード
  • アカウントがロックされました

このシナリオでは、3つの可能な結果文字列と結果をレンダリングするための3つの異なるビューでアクションメソッドが構成されます。 これは前の例ですでに見ました。

ただし、Struts2は、JSPをビューテクノロジーとして使用することとは関係ありません。 結局、MVCパラダイムの全体的な目的は、レイヤーを分離し、高度に構成可能にすることです。 たとえば、Web2.0クライアントの場合、出力としてXMLまたはJSONを返すことができます。 この場合、XMLまたはJSONの新しい結果タイプを作成し、これを実現できます。

Strutsには、事前定義された多くの result types と、JSPページへのディスパッチに使用されるデフォルトのresult type dispatcher がすでに見られています。 Strutsを使用すると、ビューテクノロジーに他のマークアップ言語を使用して結果を表示することができ、 Velocity、Freemaker、XSLTTiles などの一般的な選択肢があります。

ディスパッチャの結果タイプ

*dispatcher* 結果タイプはデフォルトタイプであり、他の結果タイプが指定されていない場合に使用されます。 サーバー上のサーブレット、JSP、HTMLページなどに転送するために使用されます。 _RequestDispatcher.forward()_メソッドを使用します。

以前の例では、結果タグの本文としてJSPパスを提供した「速記」バージョンを見ました。

<result name = "success">
  /HelloWorld.jsp
</result>

次のように<result …​>要素内で<param name = "location">タグを使用してJSPファイルを指定することもできます-

<result name = "success" type = "dispatcher">
   <param name = "location">
     /HelloWorld.jsp
   </param >
</result>

また、デフォルトでtrueである parse パラメーターを指定することもできます。 解析パラメーターは、OGNL式についてロケーションパラメーターを解析するかどうかを決定します。

FreeMaker結果タイプ

この例では、 FreeMaker をビューテクノロジとして使用する方法を確認します。 Freemakerは、事前定義されたテンプレートを使用して出力を生成するために使用される一般的なテンプレートエンジンです。 次の内容で hello.fm というFreemakerテンプレートファイルを作成します。

Hello World ${name}

上記のファイルは、 name が定義済みのアクションを使用して外部から渡されるパラメーターであるテンプレートです。 このファイルはCLASSPATHに保持します。

次に、 struts.xml を変更して、次のように結果を指定します-

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <constant name = "struts.devMode" value = "true"/>
   <package name = "helloworld" extends = "struts-default">

      <action name = "hello"
         class = "com.finddevguides.struts2.HelloWorldAction"
         method = "execute">
         <result name = "success" type = "freemarker">
            <param name = "location">/hello.fm</param>
         </result>
      </action>

   </package>

</struts>

例の章で作成したHelloWorldAction.java、HelloWorldAction.jspおよびindex.jspファイルを保持します。

次に、プロジェクト名を右クリックし、[エクスポート]> [WARファイル] *をクリックして、WARファイルを作成します。

次に、このWARをTomcatのwebappsディレクトリにデプロイします。 最後に、Tomcatサーバーを起動して、URL http://localhost:8080/HelloWorldStruts2/index.jsp にアクセスしてみます。 これにより、次の画面が生成されます。

Hello World Struts 4

値「Struts2」を入力して、ページを送信します。 次のページが表示されます。

Hello World Struts 5

ご覧のとおり、これはJSPビューとまったく同じですが、ビューテクノロジーとしてJSPを使用することに縛られていない点が異なります。 この例ではFreemakerを使用しました。

リダイレクト結果タイプ

*redirect* 結果タイプは、標準の_response.sendRedirect()_メソッドを呼び出して、ブラウザーに特定の場所への新しいリクエストを作成させます。

場所は、<result …​>要素の本体で、または<param name = "location">要素として提供できます。 リダイレクトは、 parse パラメーターもサポートしています。 これは、XMLを使用して構成された例です-

<action name = "hello"
   class = "com.finddevguides.struts2.HelloWorldAction"
   method = "execute">
   <result name = "success" type = "redirect">
      <param name = "location">
        /NewWorld.jsp
      </param >
   </result>
</action>

したがって、上記のようにstruts.xmlファイルを変更してリダイレクトタイプを定義し、helloアクションが成功を返すたびにリダイレクトされる新しいファイルNewWorld.jpgを作成します。 理解を深めるために、リンク:/struts_2/struts_redirect_action [Struts 2 Redirect Action]の例を確認できます。