CodeZine(コードジン)

特集ページ一覧

Apache Beehiveの開発を体験する(NetUI編)

Apache BeehiveのNetUIを利用した効率的な開発

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/06/10 00:00
目次

サンプルアプリケーションの実装詳細 - 2

基本的なJSPの作成

 NetUIにおけるJSPの作成方法は基本的にStrutsなどと同じです。異なるのはNetUIの専用のタグで記述するところです。次にformを含んだ簡単なJSPの例を記述します。

サンプル7 NetUI専用タグの使用例
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0"
    prefix="netui-data"%>
<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0"
    prefix="netui"%>
<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0"
    prefix="netui-template"%>
<netui:html>
    <head>
        <title>……</title>
        <netui:base/>
    </head>
    <netui:body>
……
        <netui:form action="……">
……
        </netui:form>
……
    </netui:body>
</netui:html>

 htmlbodyタグには、<netui:html><netui:body>を使用します。Formには<netui:form>というタグを使用し、action要素にコントローラーに記述したアクションメソッド名を記述します。サンプルアプリケーションでは、loginProcessinputMemoProcessとなります。例えば、loginProcessの方のFormの実装を見てみます。

サンプル8 「login.jsp」のソースの一部
<netui:form action="loginProcess">
  Login ID: <netui:textBox dataSource="actionForm.id"/>
  <br/>
  Password: <netui:textBox password="true"
             dataSource="actionForm.password"/>
  <br/>
  <netui:button type="submit" value="ログイン"/>
</netui:form>

 ここで、テキストフィールドを表現するために<netui:textBox>タグを使用しています。<netui:textBox>タグのdataSourceプロパティには対応するフォームのフィールド名を設定しています。ここではそれぞれ、actionForm.idactionForm.passwordとなっていますが、これは、loginProcessに対応するFormであるLoginFormidpasswordフィールドにマッピングさせています。これにより、Formをサブミットした際に、コントローラー側で入力された値をマッピングしたloginProcessのフォーム(LoginForm)を生成します。

NetUI-JSPタグライブラリ

 NetUIには以下の3種類のタグライブラリがあります。表に概要をまとめました。

NetUI-JSPタグライブラリ
種類TLDファイル名サンプルでの別名概要
NetUIタグ・ライブラリーnetui-tags-html.tldnetuiHTML系のタグライブラリ
NetUIデータ・タグ・ライブラリーnetui-tags-databinding.tldnetui-dataフォーム、コントローラーのデータをJSPとバインドするために使用
NetUIテンプレート・タグ・ライブラリーnetui-tags-template.tldnetui-templateJSPファイルからテンプレートを作るために使用

 この中で主に使用されるのは、NetUIタグ・ライブラリーになります。基本的にStrutsのhtmlタグと似ているのでStrutsの経験があれば、困ることはないでしょう。次に、具体的に使用されるタグを表にしました。

主に使用されるタグ
タグ名概要
<netui:anchor>アンカーを表示する
<netui:form>フォームタグを生成する
<netui:textBox>text、passwordのタグを生成する
<netui:button>submit、reset、buttonのタグを生成する
<netui-data:repeater>Strutsの<logic:iterate>のように繰り返し処理に使用する
<netui-data:message>メッセージを出力する

 この中で、サンプルアプリケーションにはないものの、よく使われる複数行の繰り返し表示を<netui-data:repeater>を使用した方法で簡単に解説しておきます。<netui-data:repeater>はプロパティとしてdataSourceをとり、この値には繰り返し処理の対象となるコレクション・配列を指します。さらに、<netui-data:repeater>タグの中で、コレクション・配列の要素を取得し、出力しています。

サンプル9 <netui-data:repeater>を使用したテーブルの例
<table>
<netui-data:repeater dataSource="actionForm.userList">
    <tr><td>${container.item.usrId}<br/></td></tr>
    <tr><td>${container.item.usrName}<br/></td></tr>
</netui-data:repeater>
</table>

Validate

 Strutsと同じようにNetUIにもValidationが存在し、定義はアノテーションによって行われます。例えば、ログイン処理の際に、ログインIDが入力されていなかった場合にログイン画面に遷移し、エラーを表示する記述は次のようになります。

サンプル10 Validateの例
@Jpf.Action(
    forwards={
        @Jpf.Forward(name="success", path="input.jsp")
    },
    validatableProperties={
        @Jpf.ValidatableProperty(
            propertyName="id",
            displayName="loginID",
            validateRequired=@Jpf.ValidateRequired()
        )
    },
    validationErrorForward=@Jpf.Forward(name="fail", path="login.jsp")
)
public Forward loginProcess(LoginForm form)
{
    return new Forward("success");
}

 対象のアクションにつけられた@Jpf.Actionアノテーションの中に、 validatablePropertiesを記述し、その中に@Jpf.ValidatablePropertyアノテーションを記述します。@Jpf.ValidatablePropertyアノテーションの中には、フォームの中のvalidate対象フィールド名のpropertyName、エラー時の表示名を表すdisplayName、さらにvalidate内容を加えます。また、ここでは必須チェックのため、validateRequired=@Jpf.ValidateRequired()を使用しています。これ以外にも、次のようなvalidationがあらかじめ用意されています。

主に使用されるタグ
validation概要
validateEmail=@Jpf.ValidateEmail()妥当なEメールであるかどうか
validateMinLength=@Jpf.ValidateMinLength(chars = x)文字列が指定された文字数より大きいか
validateDate=@Jpf.ValidateDate(pattern="x")日付が指定された形式にマッチするか

 validationでエラーを検知した場合には、アクション処理を行わず、その下に記述されている、validationErrorForward=@Jpf.Forward(name="fail", path="login.jsp")により、「login.jsp」に遷移します。「login.jsp」でエラーメッセージを出力する場合には次のように記述します。

サンプル11 エラーメッセージ表示の例
<netui:errors> <!--すべてのエラー -->

……<中略>……

<netui:error value="id" /> <!--idのエラー -->

まとめ

 今回は参考資料にも載せた『Apache Beehiveの開発を体験する(コントロール作成編)』の続編としてNetUIについて解説をしました。NetUIを含めApache Beehiveは、J2EEのアプリケーション開発をより効率よくパワフルに開発するライブラリとして開発が進められています。そして、そのJ2EEアプリケーションの中には、今後のビジネスアプリケーション開発の主流とも言われるSOA(サービス指向アーキテクチャ)も含まれています。SOAは機能をWebサービスとして分散して開発するものと言われていますが、WebサービスはApache BeehiveプロジェクトのWeb Service Metadataによって簡単に開発できます。

 本稿が新たなビジネスアプリケーション開発手法への足がかりとなれば幸いです。

参考資料

  1. Apache Beehive
  2. CodeZine 『Apache Beehiveの開発を体験する(コントロール作成編)』 WINGSプロジェクト 佐藤真介 著、翔泳社、2006年5月


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Apache Beehiveの開発を体験する

著者プロフィール

  • WINGSプロジェクト 佐藤 真介(サトウ シンスケ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5