はじめに
以前の記事では、開発ツールを使用してアプリケーションを一気に作りました。さらに、ツールで作成したアプリケーションも柔軟にカスタマイズできることを説明しました。ただし、カスタマイズするにはdataforms.jarの提供するAPIを理解する必要があります。
dataform.jarはクライアントサイドで動作するJavaScriptのAPIとサーバーサイドで動作するJavaのAPIを提供しています。それぞれのAPIは、WebComponentを基底クラスとする同じクラス階層構造になっています。例えばページ中のフォームの動作は、クライアントサイドの動作を規定する/dataforms/controlle/Form.jsとサーバーサイド動作を規定するdataforms.controlle.Form.javaで実装されています。今回の記事では、フォームクラスのJavaScriptとJavaの連携部分を説明したいと思います。
対象読者
この記事を読むのに必要な知識を以下にまとめます。
- Java
- JavaScript
- jQuery、jQuery-ui
- HTML、CSS
必要な環境
dataforms.jarを使用した開発では、以下を使用しています。
- JDK1.8
- Eclipse 4.5以上
- Tomcat 7以上
ページの作成
以前の記事「OSSフレームワーク「dataforms.jar」でサンプルプログラムを構築する(1)」の「開発環境の構築」「機能の登録」を参考にして、以下のプロジェクトを作成します。
| 項目 | 内容 |
|---|---|
| プロジェクト名 | pagesample |
| DB接続URL | jdbc:derby:/javadb/pagesample;create=true |
| Javaソース出力フォルダ |
/eclipse/pleiades-e4.7.1/workspace/pagesample/src (各自の環境に合わせて設定しててください) |
| Webリソース出力フォルダ |
/eclipse/pleiades-e4.7.1/workspace/pagesample/WebContent (各自の環境に合わせて設定しててください) |
| 追加する機能 | /pagesampleページサンプル |
このプロジェクトに単純なページを作成します。今回はツールでFormクラスの作成は行わず、ページクラスの作成のみ行います。以下のように「ページJavaクラス作成」で、テーブル操作「無し」、すべてのFormを生成しないように指定してPageクラスを作成します。
このツールで作成されたページクラスは以下のようになります。
package pagesample.page;
import dataforms.app.page.base.BasePage;
import dataforms.dao.Dao;
import dataforms.dao.Table;
/**
* ページクラス。
*/
public class SimplePage extends BasePage {
/**
* コンストラクタ。
*/
public SimplePage() {
}
/**
* Pageが配置されるパスを返します。
*
* @return Pageが配置されるパス。
*/
public String getFunctionPath() {
return "/pagesample";
}
/**
* 操作対象テーブルクラスを取得します。
* <pre>
* ページjavaクラス作成用のメソッドです。
* </pre>
* @return 操作対象テーブル。
*/
public Class<? extends Table> getTableClass() {
return Table.class;
}
/**
* テーブルを操作するためのDaoクラスを取得します。
* <pre>
* ページjavaクラス作成用のメソッドです。
* </pre>
* @return Daoクラス。
*/
public Class<? extends Dao> getDaoClass() {
return Dao.class;
}
}
前回の記事では開発ツールを使用して、テーブルクラスにフィールドを配置し、そのテーブルを指定してフォームにフィールドを配置するという形をとりました。しかし、今回は単純なフォームクラスの動作を確認するために、フォームに対して直接フィールドを配置します。以下のSimpleForm.javaを作成してください。
package pagesample.page;
import dataforms.controller.Form;
import dataforms.field.base.TextField;
import dataforms.field.sqltype.DateField;
import dataforms.field.sqltype.IntegerField;
import dataforms.field.sqltype.NumericField;
/**
* 単純なForm。
*
*/
public class SimpleForm extends Form {
/**
* コンストラクタ。
*/
public SimpleForm() {
super(null);
this.addField(new TextField("text1")).setComment("テキスト");
this.addField(new IntegerField("integer1")).setComment("整数");
this.addField(new NumericField("numeric1", 10, 2)).setComment("数値(10,2)");
this.addField(new DateField("date1")).setComment("日付");
}
}
さらに、SimplePageのコンストラクタで、SimpleFormクラスのインスタンスを追加します。
/**
* コンストラクタ。
*/
public SimplePage() {
this.addForm(new SimpleForm());
}
ここまでのコーディングを行ったら、プロジェクトのクリーンビルドを行ってください。ビルドが終了したら開発ツールの「Webリソース作成」を使用して、HTMLを作成します。
このツールで作成されたHTMLは以下の通りです。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="mainDiv">
<form id="simpleForm">
<div class="formHeader">xxx</div>
<table class="responsive">
<tbody>
<tr>
<th>テキスト</th>
<td><input type="text" id="text1" /></td>
</tr>
<tr>
<th>整数</th>
<td><input type="text" id="integer1" /></td>
</tr>
<tr>
<th>数値(10,2)</th>
<td><input type="text" id="numeric1" /></td>
</tr>
<tr>
<th>日付</th>
<td><input type="text" id="date1" /></td>
</tr>
</tbody>
</table>
</form>
</div>
</body>
</html>
HTMLを作成したらプロジェクトのクリーンビルドを行い、tomcatへのデプロイを待ちます。その後、「単純なページ」をアクセスすると、下図のようになります。この段階で「数値(10,2)」に数値を入力すると、小数点以下の桁数が2桁にそろえられ、「日付」フィールドにはjquery-uiのdatepickerが設定されます。
