TOPシステム開発> 前回は
徹底比較!!Ruby on Rails vs Javaフレームワーク
徹底比較!!Ruby on Rails vs Javaフレームワーク

第3回:JSFとRailsで比較(後編)

著者:DTS  五座 淳一   2006/9/12
1   2  3  次のページ
前回は

   前回は、アーキテクチャ、ルーティング、ビュー、ビュー/アクション連係についてJSFとRailsを比較してきました。続く今回は、ビューヘルパーとバリデーションに関して解説していきます。

ビューヘルパーの比較

   まずは、ビューヘルパーについてです。システムとして、ビューにロジックを持たせることはMVCモデルの関係を崩してしまうため、望ましくありません。しかし、ビューとロジックを明確に分離することは難しく、ビューにロジックを記述しなければならない状況になることはよくあります。

   これを解決するのがビューヘルパーです。独自にカスタマイズされたタグを新たに作成することで、ビューにロジックが入り込むことを極力避けることができます。


JSFのビューヘルパー

   JSFのビュー(JSP)に入り込んでしまったロジックは、スクリプトレットとして表現されます。スクリプトレットはJSPの可読性を著しく落としてしまうため、できるだけ使用を避ける必要があります。

   スクリプトレットを避ける手段として用いられるのが、JSPのカスタムタグです。カスタムタグを作成するには、次のファイルを編集、もしくは作成する必要があります。

  • タグハンドラクラス
  • taglibディスクリプタ
  • カスタムタグを記述したJSP

表1:カスタムタグを作成するのに非常なファイル

   次に示すのは、name属性に記述した名前を使って「こんにちは〜さん」と表示する非常に単純なカスタムタグを作成する例です。

タグハンドラクラス
public class HelloTag extends SimpleTagSupport {
   private String name;

   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public void doTag() throws JspException, IOException {
      String message = "こんにちは " + name + "さん";
      getJspContext().getOut().write(message);
   }
}

taglibディスクリプタ
<tag>
   <description>HelloTag</description>
   <name>hello</name>
   <tag-class>com.example.jsf.HelloTag</tag-class>
   <body-content>empty</body-content>
   <attribute>
      <name>name</name>
      <required>true</required>
   </attribute>
</tag>

JSPにてカスタムタグを使う
<%@ taglib uri="/WEB-INF/my-taglib.tld" prefix="my" %>
<my:hello name="田中"/>

   たったこれだけの機能を実現するために、これほどの記述量があるカスタムタグの作成は、面倒であるといわざるを得ません。

   また、カスタムタグに似た機能として、カスタムコンポーネントと呼ばれるUIコンポーネントを独自に作成する機能があります。カスタムタグを使って実現されているため、カスタムコンポーネントを作成するのもカスタムタグ同様に簡単ではありません。

1   2  3  次のページ


株式会社DTS  五座 淳一氏
著者プロフィール
株式会社DTS  五座 淳一
技術部所属。入社以来、交換機や携帯電話、Webシステムなど様々な開発を担当する。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。


INDEX
第3回:JSFとRailsで比較(後編)
前回は
  Railsのビューヘルパー
  Railsのバリデーション