3.3.5. Mode&Formated¶
intra-mart Accel Kaiden!ではテキストボックスなどのモードやフォーマットを簡単に切り替える機構を用意しています。本項では、モードやフォーマットの仕様を解説します。
3.3.5.1. モードとは?¶
intra-mart Accel Kaiden! のタグライブラリでは、mode属性に設定した値によってモードを変更することができます。モードはタグライブラリのmode属性に設定した値により自動的に設定され、mode属性に”0”を設定した場合は入力モードとして扱われ、”1”を設定した場合は表示モードとして扱われます。主に申請書の入力画面(申請画面)と処理画面(承認画面)で使用している機能で、入力画面ではmode属性に”0”を、処理画面ではmode属性に”1”を設定し、一つのJSPで入力画面と処理画面を実現しています。
モードが指定可能なタグライブラリ
タグライブラリ 入力モードの状態mode=”0” 表示モードの状態mode=”1”テキストボックス <k:text> <input type=”text”> <label> テキストボックス(数値) <k:numericText> <input type=”text”> <label> テキストボックス(コード) <k:codeText> <input type=”text”> <label> テキストボックス(Hidden) <k:hidden> <input type=”hidden”> <label> テキストボックス(日付) <k:date> <input type=”text”> <label> テキストボックス(時間) <k:time> <input type=”text”> <label> テキストボックス(国際化対応) <k:text-locales> <input type=”text”> <label> テキストボックス(パスワード) <k:password> <input type=”password”> <label> テキストエリア <k:textarea> <textarea> <label> テキストエリア(国際化対応) <k:textarea-locales> <textarea> <label> ドロップダウンリスト <k:select> <select> <label> チェックボックス <k:checkbox> <input type=”text”> <label> アンカー <k:a> <a> 非表示(何も出力しません) ボタン <k:button> <input type=”button”> 非表示(何も出力しません) ラジオボタン <k:radio> <input type=”radio”> <label> コラム
上記以外にもマスタ検索のタグライブラリにもモードの設定が可能です。マスタ検索のタグライブラリはテキストボックス <k:text>と同様です。タグライブラリの詳細はタグライブラリを参照してください。
3.3.5.2. フォーマットとは?¶
intra-mart Accel Kaiden! では未フォーマットの値とフォーマット済の値の両方をクライアント(厳密にはAccessor)へ渡します。渡された値は、タグライブラリのformated属性により、表示する値を変更することができます。
formated属性により使用される値
formated属性の値 mode=”0”の場合 mode=”1”の場合 “input” 未フォーマットの値 未フォーマットの値 “view” 未フォーマットの値 フォーマット済の値 “both” フォーマット済の値 フォーマット済の値
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","2000年01月01日"]); //txt1には"2000/01/01"が設定される blockAccessor("txt2").setValue(["2000/01/01","2000年01月01日"]); //txt2には"2000年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); } // フォーマット変換した文字列のMapを返却することで、 // 「未フォーマットの値」と「フォーマット済の値」の配列が作成されます。 return result; } } /* ~略~ */ // フォーマット変換・コンバート実行 Converter converter = new Converter(); Map<String, Object> convertedMap = converter.mapConvert(/*フォーマット変換対象Map*/); // String[] { /*未フォーマットの値*/, *フォーマット済の値*/} が返却されます。 convertedMap.get("startDate");