intra-mart Accel Kaiden! / プログラミングガイド

«  ガジェット内にあるテキストボックスなどの要素へのアクセス   ::   コンテンツ   ::   ダイアログ  »

テキストボックスなどエレメントの表示モードと書式

intra-mart Accel Kaiden! のテキストボックスなどはmodeを指定することで表示モード(ラベル・disabled・非表示)に変化させることができます。
具体的には、タグリブのプロパティ”mode”に”1”を指定すると表示モードで出力されます。(mode=”0”の場合はエレメントそのものを出力)
また、プロパティ”formated”にて書式化された値を設定/表示させることができます。

これは主に申請書機能において、入力画面(申請書を作成する画面)と処理画面(承認などを行う画面)で使われる機能で、
入力画面ではmode=”0”を、処理画面ではmode=”1”を指定することで、一つのJSPで入力画面と入力内容表示画面を実現できます。

表示モードが指定可能なエレメント(タグリブ)

タグ mode=”1”の時の状態
<k:a /> 非表示
<k:button /> 非表示
<k:checkbox /> disabled
<k:codeText /> ラベル
<k:date /> ラベル
<k:hidden /> ラベル
<k:numericText /> ラベル
<k:password /> ラベル
<k:radio /> disabled
<k:select /> ラベル
<k:text /> ラベル
<k:textarea /> ラベル

ノート

タグリブに関して詳細は タグリブ を参照してください。

書式化された値と書式化されていない値の表示切替

intra-mart Accel Kaiden! では書式化された値と書式化されていない値の両方を同時にクライアント(厳密にはAccessor)へ渡すことで、
JSP側でどちらの形式で表示するかを決定することができます。

たとえば、日付を例にとると、
書式化前”2000/01/01”、書式化後”2000年01月01日”を配列で同時にクライアントへ渡すことで、タグリブのformatedプロパティの内容によって
設定/表示される値が切り替わります。
formatedプロパティの値 説明
“input”
mode=”0”の場合は、書式化される前の値
mode=”1”の場合は、書式化される前の値
“view”
mode=”0”の場合は、書式化される前の値
mode=”1”の場合は、書式化された値
“both”
mode=”0”の場合は、書式化された値
mode=”1”の場合は、書式化された値

JSPのコーディング例

<k:text name="txt1" mode="0" formated="view" />
<k:text name="txt2" mode="1" formated="view" />
// ブロックに対するAccessor
var blockAccessor   = KAIDEN.getGadget("ガジェットID").blockAccessors["ブロックID"];

//値を設定する
blockAccessor("txt1").setValue(["2000/01/01","2001年01月01日"]);  //txt1には"2000/01/01"が設定される
blockAccessor("txt2").setValue(["2000/01/01","2001年01月01日"]);  //txt2には"2001年01月01日"が設定される

javaのコーディング例

jp.co.slcs.kaiden2.base.foundation.util.ConvertForJsonSource
に書式変換を行う機能があり、このクラスをサブクラス化し以下のようにformatFormatedValueをオーバーライドすることで、
特定のフィールドの書式変換と配列化を行うことができます。
class Converter extends ConvertForJsonSource {

    @Override
    protected Map<String, String> formatFormatedValue(Map<String, Object> map, Stack<String> fldNameStack) {
        // 標準書式変換
        Map<String, String> result = super.formatFormatedValue(map, fldNameStack);

        // 開始日の書式変換
        Object startDate = map.get("startDate");
        if (startDate != null) {
            String formated = /*書式変換後の文字列*/"";
            result.put("startDate", formated);
        }

        // 終了日の書式変換
        Object endDate = map.get("endDate");
        if (endDate != null) {
            String formated = /*書式変換後の文字列*/"";
            result.put("endDate", formated);
        }

        return result; //書式変換した文字列のMapを返却することで、「書式化される前の値」と「書式化された」の配列が作成されます。
    }
}

/* ~略~ */
Converter converter = new Converter();
Map<String, Object> convertedMap = converter.mapConvert(/*書式変換対象Map*/); //書式変換・コンバート実行

convertedMap.get("startDate"); // String[] { /*書式化される前の値*/, *書式化された値*/} が返却されます。

«  ガジェット内にあるテキストボックスなどの要素へのアクセス   ::   コンテンツ   ::   ダイアログ  »