リンク情報を動的に変更する¶
リンクの情報(URLやパラメータ)を動的に変更することができます。
バリデータクラスを作成します。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; } }WEB-INF/plugin フォルダに任意のディレクトリを作成します。
作成したディレクトリにplugin.xmlを作成します。
作成した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による設定順序ルールに基づき、すべてのコンバータを処理します。