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

タイトル、コメントを動的に変更する

タイトル、コメントを動的に変更することができます。

以下の例は、サンプルとして提供されている内容を記載しています。
  • イベントフロー、質問、回答、ナビゲート結果およびリンクのタイトルおよびコメントに ${userCd}という文字列が存在した場合、
    ログインしているユーザコードに変換します。

  1. コンバータクラスを作成します。

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

    引数で渡された、TitleInfoの内容を変更して、返却します。
    package jp.co.intra_mart.system.navigator;
    
    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.TitleInfo;
    import jp.co.intra_mart.foundation.navigator.TitleInfoConverter;
    
    /**
     * ユーザコードに置換するサンプルタイトルコンバータです。<br>
     * <br>
     * ${userCd}をログイン中のユーザコードに置き換えます。
     * @author INTRAMART
     * @version 8.0.0
     * @since 8.0.0
     */
    public class SampleTitleInfoConverter implements TitleInfoConverter{
    
        private static final String TARGET = "\\$\\{userCd\\}";
    
        /**
         * タイトル情報を変換します。<br>
         * <br>
         * ${userCd}をログイン中のユーザコードに置き換えます。
         * @param titleInfo タイトル情報
         * @return 変換後のタイトル情報
         * @exception EventNavigatorException エラーが発生した場合にスローされます。
         */
        @Override
        public TitleInfo convert(final TitleInfo titleInfo) throws EventNavigatorException{
    
            final AccountContext ctx = Contexts.get(AccountContext.class);
    
            titleInfo.setTitle(titleInfo.getTitle().replaceAll(TARGET, ctx.getUserCd()));
            titleInfo.setComment(titleInfo.getComment().replaceAll(TARGET, ctx.getUserCd()));
    
            return titleInfo;
        }
    
    }

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

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

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

    <?xml version="1.0" encoding="UTF-8"?>
    <plugin>
       <extension point="jp.co.intra_mart.foundation.navigator.converter">
          <converters
             name="Sample Title Converter"
             id="jp.co.intra_mart.foundation.navigator.converter.sample.title"
             version="8.0"
             rank="100">
             <event-flow-converter   class="jp.co.intra_mart.system.navigator.SampleTitleInfoConverter"/>
             <event-item-converter   class="jp.co.intra_mart.system.navigator.SampleTitleInfoConverter"/>
             <select-item-converter  class="jp.co.intra_mart.system.navigator.SampleTitleInfoConverter"/>
             <event-result-converter class="jp.co.intra_mart.system.navigator.SampleTitleInfoConverter"/>
             <result-page-converter  class="jp.co.intra_mart.system.navigator.SampleTitleInfoConverter"/>
          </converters>
       </extension>
    </plugin>

コラム

それぞれのタグの意味は以下の通りです。
タグ 説明
event-flow-converter イベントフローのタイトルとコメント。
event-item-converter 質問のタイトルとコメント。
select-item-converter 回答のタイトルとコメント。
event-result-converter ナビゲート結果のタイトルとコメント。
result-page-converter ナビゲート結果のリンクのタイトルとコメント。

コラム

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