Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第3部 Webアプリケーションの開発> 第15章 UJIタグを使ったプログラミング> 15.4 コンポーネントタグを使ったプログラミング

15.4.2 フィールドタグの利用

フィールドタグは、対応する項目クラスと組み合わせて利用する方法と、単独で利用する方法があります。

■対応する項目クラスと組み合わせて利用する

フィールドタグには対応する項目クラスがあります。 例えば、uji:fieldStringタグにはFieldStringクラスが対応しています。
データBeanでこの項目クラスをプロパティとして定義します。

package sample;
import com.fujitsu.uji.compo.*;

public class BodyBean extends com.fujitsu.uji.DataBean
{
    protected FieldString strData = new FieldString();

    public FieldString getStrData() {
        return strData;
    }

    ...
}

JSPではタグをデータBeanのプロパティに関連付けて記述します。

<FORM>
    <uji:fieldString bean="body" property="strData" />
    ...
</FORM>

フォームが送信されると、入力項目に入力されたデータは項目クラスに格納されます。また、画面表示時には、項目クラスが持つデータが表示されます。 このとき、表示するデータに文字 '"', '&', '<', '>' が含まれている場合は、それぞれ'&quot;', '&amp;', '&lt;', '&gt;'に変換されて出力されます。

uji:labelタグには対応する項目クラスはありません。
また、フィールドタグと画面部品タグを組み合わせて使うことで、画面部品で利用したオブジェクトを引き継ぐことができます。

■フィールドタグを単独で利用する

フィールドタグを利用する場合、データBeanに項目クラスではなく一般のString等の型が利用できます。

package sample;

public class BodyBean extends com.fujitsu.uji.DataBean
{
    protected String strData;

    public String getStrData() {
        return strData;
    }
    public void setStrData(String strData) {
        this.strData = strData;
    }

    ...
}

JSPの記述は項目クラスを利用する場合と同じです。

<FORM>
    <uji:fieldString bean="body" property="strData" />
    ...
</FORM>

フォームが送信されると、入力項目に入力されたデータはpropertyアトリビュートで指定したプロパティに格納されます。また、画面表示時には、プロパティの値が表示されます。 このとき、表示する値に文字 '"', '&', '<', '>' が含まれている場合は、それぞれ'&quot;', '&amp;', '&lt;', '&gt;'に変換されて出力されます。

uji:pushButtonタグ、uji:labelタグは項目に対応しません。 データBeanのプロパティ、タグのプロパティ指定は必要ありません。


<FORM>
    <uji:pushButton name="OK" />
    ...
</FORM>

項目クラスの代わりにデータBeanで使用できる型は、 String、boolean、byte、char、int、long、float、double、BigDecimal、BigInteger です。uji:fieldDateタグでは、さらにDate型も使用できます。 これらの型を使用した場合、Webcoordinatorが型を判定し、フォームに入力されたデータを自動変換します。自動変換できない場合は、初期値(null、ゼロ)がデータBeanに設定されます。

■フィールドの色や大きさを指定する

フィールドタグのアトリビュートで、色や大きさを指定します。
x ns4.xNetscape 4.xでは色、大きさの指定は無効です。

<FORM>
    <uji:fieldString bean="body" property="strData"
            width="120" height="40" background="yellow" foreground="blue"
            borderWidth="3" fontSize="12pt" />
    ...
</FORM>

文字色など設定の一部は、項目クラスのプロパティで変更できます。 項目クラスで指定した内容はタグのアトリビュートよりも優先されます。

    dataBean.getStrData().setForeground("red");

項目クラスを使用しない場合の指定方法は、外付け属性の利用を参照してください。

■数値フォーマットを指定する

数値項目のフォーマットの指定が可能です。

<FORM>
    <uji:fieldLong bean="body" property="longData"
            outputFormat="\\#,##0" />
    ...
</FORM>

入力データは一般的な形式は自動的に変換されます。 例として、整数フィールドでは"-1234"、"\2,000"のような文字列は自動変換します。
特別な形式で入力する場合には、項目クラスを継承し、変換用のメソッドを作成する必要があります。

package sample;
import java.text.*;
import com.fujitsu.uji.compo.*;

public class MyFieldDate extends FieldDate {
    // 入力文字列originalを一般形に変換する
    public String parse(String original) {
        try {
            SimpleDateFormat formatter = new SimpleDateFormat("yyMMdd");
            return formatter.parse(text).toString();
        } catch(Exception e) {
            return "0000/01/01"; // エラー用の値
        }
    }
}

■入力値の範囲をチェックする

項目クラスに数値範囲の上限下限を設定することで、範囲チェックを容易に記述することができます。

    ... 表示前
    dataBean.getLongData().setMinimumValue(0);
    dataBean.getLongData().setMaximumValue(100);

    ... 入力後
    if(dataBean.getLongData().getErrorCode() != FieldLong.NO_ERROR) {
        ... エラー
    }


uji:formタグと併用することにより、チェックのためのJavaScriptコードを自動生成します。 送信時にチェックを実行し、エラーの場合、ブラウザ画面にメッセージを表示します。

<uji:form name="myform">
    <uji:fieldLong bean="body" property="longData"
            minimumValue="0" maximumValue="100" />
    ...
</uji:form>


目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005