表示値の書式変換処理¶
ガジェットに表示する値の書式変換処理は、Actionクラスに書式変換クラスを実装し、Logic呼び出し時の引数に指定しています。チュートリアルで作成したチュートリアルガジェットでは、「金額」項目に対して書式変換しています。チュートリアルのプログラムを抜粋したものを以下に掲載します。(チュートリアルガジェットのアクションはこちら)/** * チュートリアルガジェット基底クラス(Action). */ public abstract class AbstractGadgetTutorialActionBase implements GadgetActionIF { /** 処理画面のデータロード. */ @Override @Execute(validator = false) public String loadProcess() { ResponseWriter.writeJSon(JSON.encode(getViewData())); return null; } /** 画面表示用データを返却. */ @Override public LogicResultDto getViewData() { return getLogic().view(getForm(), getConvertor()); } /** 書式変換設定を返却. */ protected TutorialConvertor getConvertor() { return new TutorialConvertor(getForm()); } /** チュートリアルガジェットの書式変換. */ private class TutorialConvertor extends ConvertForJsonSource { /** リクエストパラメータ. */ private final AbstractImwPageForm frm; /** NumberHelper. */ private final NumberHelper numberHelper; /** コンストラクタ. */ public TutorialConvertor(AbstractImwPageForm frm) { this.frm = frm; numberHelper = SingletonS2Container.getComponent(NumberHelper.class); } /** 入力項目用書式変換. */ @Override protected Map<String, Object> formatPlainValue(Map<String, Object> map, Stack<String> fldNameStack) { Map<String, Object> result = new HashMap<String, Object>(map); // 金額の書式変換 if (result.containsKey(TUTORIAL_AMOUNT)) { BigDecimal amount = (BigDecimal) result.get(TUTORIAL_AMOUNT); Object currencyCd = result.get(TUTORIAL_CURRENCY_CD); result.put(TUTORIAL_AMOUNT, numberHelper.formatCurrencyAmount4Input(amount, frm.searchCriteriaCompany, (String) currencyCd)); } return result; } /** 表示項目用書式変換. */ @Override protected Map<String, String> formatFormatedValue(Map<String, Object> map, Stack<String> fldNameStack) { Map<String, String> result = super.formatFormatedValue(map, fldNameStack); // 金額の書式変換 if (map.containsKey(TUTORIAL_AMOUNT)) { BigDecimal amount = (BigDecimal) map.get(TUTORIAL_AMOUNT); Object currencyCd = map.get(TUTORIAL_CURRENCY_CD); result.put(TUTORIAL_AMOUNT, numberHelper.formatCurrencyAmount4View(amount, frm.searchCriteriaCompany, (String) currencyCd)); } return result; } } }
解説¶
チュートリアルではTutorialConvertorという書式変換クラスをインナークラスで作成しています。書式変換クラスには、入力項目用書式変換を行うformatPlainValueメソッドと、表示項目用書式変換を行うformatFormatedValueメソッドを実装します。このインナークラスは、Logic呼び出し時に引数に渡し、Logicで書式変換処理を実行します。ノート
業務固有の書式変換処理が不要である場合は、jp.co.slcs.kaiden2.base.foundation.util.ConvertForJsonSourceクラスを渡してください。