SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Struts 1/Struts 2 Webアプリケーションフレームワークの比較

同じアプリケーションを元にStrutsの進化を知る

ダウンロード サンプルソース (27.5 KB)

Struts 2の場合 2

不具合エントリを作成/変更するためのデータフォーム

<s:form action="action!save" method="post"  >
   <s:hidden name="defect.id" value="%{defect.id}" />
   <s:textfield label="%{getText('defect.description')}"
      name="defect.description" value="%{defect.description}"
      size="100" maxlength="200" required="true" />
   <s:select label="%{getText('defect.priority')}"
      name="defect.priority" value="%{defect.priority}"
      list="#{'1':'1','2':'2','3':'3','4':'4'}" />
   <br/>
   <s:if test="defect.id > 0">
      <s:textfield label="%{getText('defect.resolution')}"
         name="defect.resolution" value="%{defect.resolution}"
         size="100" maxlength="200" />
   </s:if>
   <br/>
   <s:submit value="%{getText('defect.editrecord')} " />
   <s:submit value="%{getText('defect.cancel')}" action="list" />
</s:form>

 Struts 2では、式をサポートするためにOGNLライブラリを利用しています。これによって、ラベルとモデルデータを一緒に効率的に表示できます。Struts 2の<if>タグを使用すると、既存のIDが見つかったかどうかに応じて、resolutionフィールドの表示を切り替えることができます。フォームのaction属性には「action!save」が設定されていますが、これは、送信時にsaveメソッドが呼び出されることを表します。

 最後に、Struts 2における検証について簡単に説明します。Struts 2では、WebWorkで提供される検証フレームワークが使用されています。似たような宣言的な検証用のメソッドも提供されていますが、WebWorkの方がきめ細かな対応が可能です。検証には、モデル単位の検証と、アクション単位の検証の2種類があります。アクションレベルで検証するには、「{your action}-validation.xml」という名前のファイルを作成し、それをActionクラスと同じパッケージに配置します。

 モデルレベルで検証するには、モデルオブジェクトの名前を持つ同様のファイルを作成します。一般的な方法では、「Defect-validation.xml」ファイルで行ったのと同様にモデルレベルの検証を行い、次に、Actionの検証ファイルで、モデルの検証ファイル内のルールごとに検証を指示します。

Defect-validation

<validators>
   <field name="defect.description">
      <field-validator type="requiredstring">
         <message key="errors.required"/>
      </field-validator>
   </field>
</validators>

Actionの検証(「type="visitor"」属性を指定することでモデルに検証を委任)

<validators>
   <field name="defect">
      <field-validator type="visitor">
         <param name="appendPrefix">false</param>
         <message/>
      </field-validator>
   </field>
</validators>

 Struts 2では、既定で検証が有効です。validateメソッドを呼び出すことはありません。Struts 2では、inputを返すActionについては検証の呼び出しが行われないため、検証が不要な場合にこれを抑制するコードを作成しなくて済みます。Struts 2には、検証エラーメッセージを表示するための類似のタグセットがあります。

まとめ

 Struts 2には理解すべき点が多いことは否定できません。多くの変更が加えられてはいますが、このフレームワークは全体にわたって明らかにStruts 1の影響を受けています。そのうえ、Struts 2には多くの新しい機能が追加されているので、Struts 2はStruts 1の優れた後継者と言えるでしょう。

 本稿では、Struts 1とStruts 2を比較し、その概要を説明しました。本稿で使用したソースファイルは、本稿の冒頭のリンクからダウンロードできます。Struts 2のWebサイトには、本稿では扱っていない詳細情報が記載されており、アクセスしてみることを強くお勧めします。また、そのWebサイトに用意されているチュートリアルとドキュメントを参照して、フレームワークについて理解を深めてください。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Michael Klaene(Michael Klaene)

Sogeti USAの主任コンサルタント。IT関連で10年以上の経験があり、J2EE、.NET、Oracleの設計と開発が専門。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1959 2008/01/18 17:15

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー