AipoのJavascriptでVelocityの変数に設定した値を使う方法

otaguro 336views 更新:2015年10月1日

javascriptを書いていると、ログインしているユーザー自身の名前などのVelocityの変数をjavascriptの変数として使いたいような場合があります。

こういった時は、既存のポートレットでは、

<script type="text/javascript">
//<![CDATA[

  aipo.schedule.login_id = "$current_user_id";
  aipo.schedule.login_name = "$current_user_ln";
  aipo.schedule.login_aliasname = "$current_user";
  〜略〜

//]]>
</script>

https://github.com/aipocom/aipo/blob/master/portlets/schedule/src/main/webapp/WEB-INF/templates/vm/portlets/html/ajax-calendar-weekly.vm

<script type="text/javascript">
//<![CDATA[

#if(!$isMessageUser)document.body.className = "messageRoomList";#end
dojo.addOnLoad(function() {
  〜略〜
  aipo.message.init("$portlet.ID", "$!jslink.getPortletById($portlet.ID)", true);
  〜略〜
});
//]]>
</script>


https://github.com/aipocom/aipo/blob/master/portlets/message/src/main/webapp/WEB-INF/templates/vm/portlets/html/message.vm

のようにテンプレートファイル(〜.vm)のscriptタグの中で設定しているようです。

AipoのGithubをCDATAで検索すると他にもいろいろと例が見れます。
https://github.com/aipocom/aipo/search?utf8=%E2%9C%93&q=CDATA

【備考】
・CDATAはXHTML中にjavascriptを書く時によく使う書き方です
 参考:http://www.ajaxtower.jp/js/before/index3.html

・dojo.addOnLoadはDOMがreadyになったタイミング(直書きよりも遅延)で実行する関数

・ログインしているユーザー自身の名前を取得したい時には、jetspeed-header.vmで使われている$data.User.getUserName()を利用するのが、新たにcontext.putする必要が無いことが多いので便利そうでした。
 https://github.com/aipocom/aipo/blob/master/war/src/main/webapp/WEB-INF/templates/vm/controls/html/jetspeed-header.vm

コメント

  1. otaguro のコメント (2015年10月2日)

    inputタグのvalueに値を設定しておくパターンもあるようです

    例:ajax-calendar-weekly.vm
    <input type=”hidden” id=”isMac” value=”${isMac}” />
    https://github.com/aipocom/aipo/blob/master/portlets/schedule/src/main/webapp/WEB-INF/templates/vm/portlets/html/ajax-calendar-weekly.vm#L31

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません