ダウンロード サンプルファイル (16.0 MB)
サンプルアプリケーションの実装詳細 - 2
基本的なJSPの作成
NetUIにおけるJSPの作成方法は基本的にStrutsなどと同じです。異なるのはNetUIの専用のタグで記述するところです。次にformを含んだ簡単なJSPの例を記述します。
<%@ 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>
html、bodyタグには、<netui:html>、<netui:body>を使用します。Formには<netui:form>というタグを使用し、action要素にコントローラーに記述したアクションメソッド名を記述します。サンプルアプリケーションでは、loginProcess、inputMemoProcessとなります。例えば、loginProcessの方のFormの実装を見てみます。
<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.id、actionForm.passwordとなっていますが、これは、loginProcessに対応するFormであるLoginFormのid、passwordフィールドにマッピングさせています。これにより、Formをサブミットした際に、コントローラー側で入力された値をマッピングしたloginProcessのフォーム(LoginForm)を生成します。
NetUI-JSPタグライブラリ
NetUIには以下の3種類のタグライブラリがあります。表に概要をまとめました。
| 種類 | TLDファイル名 | サンプルでの別名 | 概要 |
| NetUIタグ・ライブラリー | netui-tags-html.tld | netui | HTML系のタグライブラリ |
| NetUIデータ・タグ・ライブラリー | netui-tags-databinding.tld | netui-data | フォーム、コントローラーのデータをJSPとバインドするために使用 |
| NetUIテンプレート・タグ・ライブラリー | netui-tags-template.tld | netui-template | JSPファイルからテンプレートを作るために使用 |
この中で主に使用されるのは、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>タグの中で、コレクション・配列の要素を取得し、出力しています。
<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が入力されていなかった場合にログイン画面に遷移し、エラーを表示する記述は次のようになります。
@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」でエラーメッセージを出力する場合には次のように記述します。
<netui:errors> <!--すべてのエラー --> ……<中略>…… <netui:error value="id" /> <!--idのエラー -->
まとめ
今回は参考資料にも載せた『Apache Beehiveの開発を体験する(コントロール作成編)』の続編としてNetUIについて解説をしました。NetUIを含めApache Beehiveは、J2EEのアプリケーション開発をより効率よくパワフルに開発するライブラリとして開発が進められています。そして、そのJ2EEアプリケーションの中には、今後のビジネスアプリケーション開発の主流とも言われるSOA(サービス指向アーキテクチャ)も含まれています。SOAは機能をWebサービスとして分散して開発するものと言われていますが、WebサービスはApache BeehiveプロジェクトのWeb Service Metadataによって簡単に開発できます。
本稿が新たなビジネスアプリケーション開発手法への足がかりとなれば幸いです。
参考資料
- Apache Beehive
- CodeZine 『Apache Beehiveの開発を体験する(コントロール作成編)』 WINGSプロジェクト 佐藤真介 著、翔泳社、2006年5月
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Apache Beehiveの開発を体験する連載記事一覧
-
- Apache Beehiveの開発を体験する(NetUI編)
- Apache Beehiveの開発を体験する(コントロール作成編)
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 佐藤 真介(サトウ シンスケ)
< WINGSプロジェクト について> 有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
