intra-mart Accel Platform イベントナビゲータ 開発ガイド 初版 2013-07-01

リンク情報を動的に変更する

リンクの情報(URLやパラメータ)を動的に変更することができます。

  1. バリデータクラスを作成します。

    jp.co.intra_mart.foundation.navigator.LinkPageConverterを実装したクラスを作成します。

    引数で渡された、LinkPageInfoの内容を変更して、返却します。
    ただし、変更できるのは、URLとパラメータのみです。
    タイトルとコメントは変更しても反映されません。
    package sample;
    
    import jp.co.intra_mart.foundation.context.Contexts;
    import jp.co.intra_mart.foundation.context.model.AccountContext;
    import jp.co.intra_mart.foundation.navigator.EventNavigatorException;
    import jp.co.intra_mart.foundation.navigator.LinkPageConverter;
    import jp.co.intra_mart.foundation.navigator.LinkPageInfo;
    
    public class SampleLinkPageConverter implements LinkPageConverter {
    
        private static final String TARGET = "\\$\\{userCd\\}";
    
        @Override
        public LinkPageInfo convert(LinkPageInfo model) throws EventNavigatorException {
    
            // パラメータの値に ${userCd}が存在した場合に、ログインしているユーザのユーザコードに変更します。
    
            final AccountContext ctx = Contexts.get(AccountContext.class);
    
            String[] keys = model.getKeys();
    
            for(String key : keys) {
                String value = model.getParamValue(key);
                if(value != null) {
                    model.setParamValue(key, value.replaceAll(TARGET, ctx.getUserCd()));
                }
            }
            return model;
        }
    
    }

  2. WEB-INF/plugin フォルダに任意のディレクトリを作成します。

  3. 作成したディレクトリにplugin.xmlを作成します。

  4. 作成したplugin.xmlを以下のように定義します。

    <?xml version="1.0" encoding="UTF-8"?>
    <extension point="jp.co.intra_mart.foundation.navigator.converter">
       <converters
          name="Sample LinkPage Converter"
          id="test_002"
          version="8.0"
          rank="200">
    
          <link-page-converter class="sample.SampleLinkPageConverter"/>
    
       </converters>
    </extension>

コラム

コンバータは複数設定することが可能です。
PluginManagerによる設定順序ルールに基づき、すべてのコンバータを処理します。