機能説明

  • gadgetBar タグ内に表示する開閉可能なコンテンツ領域を作成します。
  • ajax通信でコンテンツの中身を取得できます。
    • 開閉するたびに取得することも可能です。
  • 初期表示時の開閉状態を選択できます
  • 領域内のガジェットはリサイズで領域サイズの変更が可能です。
  • gadgetBar と組み合わせて使用してください。
    • 組み合わせて使用しない場合はレイアウトの崩れや、開閉処理が起こらないなど動作保証をしていません。
  • リモートページを表示する場合、タグボディで指定したコンテンツはクリアされます。
  • URLを指定できる属性に「%28」(エンコードされた「(」)を利用する事ができません。
    • URLに「%28」(エンコードされた「(」)を使用した場合、エラーログが出力されます。
  • onAjaxParameterExtendで配列やオブジェクトを返すと、サーバサイドで取得できません。
    • あらかじめ実装者がシリアライズするか、jQueryのserializeをそのまま使うかの2通りの方法があります。詳細は以下の サンプル を参照してください。
  • ajax通信でコンテンツの中身を取得して表示する場合は、返却するHTMLにテーマがかからないように指定してください。詳細は以下の サンプル を参照してください。

属性一覧

注釈 属性名 説明 省略時の動作 実行時評価
cache Boolean ページキャッシュを有効にするかどうかを指定します
falseを指定した場合はガジェットを開閉するたびにコンテンツを再取得します
false
defaultOpen Boolean 初期表示時にアイテムを開いて表示するかどうかを指定します true
無害化 href String ガジェットアイテムのページURLを指定します #
id String ガジェットアイテムのidです 代替idを付与
loadRemote Boolean リモートページの読み込みを許可するかどうかを指定します
有効にした場合のみ非同期通信でコンテンツを取得します
また有効にした場合、タグのボディに指定した値は全て削除されます
true
method String リクエストメソッドを指定します
POSTとGET以外を指定した場合は初期値のGETが指定されたことになります
GET
name String ガジェットアイテムのnameです 代替nameを付与
onAjaxBeforeSend String ajax通信が発生する直前に呼び出される関数名を指定します
明示的にfalseを返したときのみ、通信をキャンセルします
-
onAjaxComplete String ajax通信終了後に呼ばれる関数名を指定します
通信結果が成功であったかエラーであったかに関係なく必ず実行されます
-
onAjaxError String ajax通信失敗後に呼ばれる関数名を指定します -
onAjaxParameterExtend String ajax通信を実行する直前に呼び出される関数名を指定します
ajax関連のメソッド内で一番最初に呼び出されます
-
onAjaxSuccess String ajax通信成功後に呼ばれる関数名を指定します -
国際化 無害化 title String ガジェットアイテムのタイトルを指定します -
無害化 その他 String ユーザ定義属性です -

サンプル

コンテンツをそのまま表示する

コンテンツをそのまま表示する
  • ボディ部に指定した値がそのまま表示されます。
  • imartタグとhtmlタグが使用できます。
JSP
<imui:gadgetBar>
  <imui:gadgetItem>
    <imui:textArea value="imuiTextAreaで生成したテキストエリア"  width="250"/>
  </imui:gadgetItem>
  <imui:gadgetItem>
    <div>
      <input type="button" value="inputタグで生成したボタン" class="imui-button">
    </div>
  </imui:gadgetItem>
</imui:gadgetBar>

ajax通信でコンテンツの中身を取得する場合

ajax通信でコンテンツの中身を取得する場合
  • ajax通信でコンテンツの中身を取得する場合、タグボディで指定したコンテンツはクリアされます。
  • ajax通信でコンテンツの中身を取得するには以下の属性を指定してください。
    • loadRemote属性にtrueになる値を指定してください。falseを指定した場合は以下のすべての属性を指定してもajax通信が行われません。省略時はtrueになります。
    • hrefに通信先のURLを指定してください。取得が出来なかった場合にはコンテンツは空で表示されます。
    • method属性にPOSTかGETを指定してください。省略時はGETになります。
    • cache属性を指定してください。省略時はfalseになるのでアイテムを開くたびにコンテンツを取得します。
JSP
<imui:gadgetBar>
  <imui:gadgetItem href="sample/gadgetBar_ajax">
    この文字列は削除され、hrefの指定先で取得したコンテンツが表示されます
  </imui:gadgetItem>
  <imui:gadgetItem href="sample/gadgetBar_ajax" loadRemote="false" >
    loadRemote="false"なのでこのまま表示されます
  </imui:gadgetItem>
</imui:gadgetBar>
routing-jssp-config/sample.xml
<?xml version="1.0" encoding="UTF-8"?>
<routing-jssp-config xmlns="http://www.intra-mart.jp/router/routing-jssp-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd ">
 
  <!-- サンプル向けの設定です。アクセス権の設定を行ってください。 -->
  <authz-default mapper="welcome-all" />
 
  <!-- imuiGadgetItemのコンテンツを取得 -->
  <file-mapping path="/sample/gadgetBar_ajax" page="sample/gadgetBar/gadgetBar_ajax" />
 
</routing-jssp-config>
サーバサイド JavaScript(sample/gadgetBar/adgetBar_ajax.js)
var $date = new Date().getTime();
 
function init(request) {
    Web.getHTTPResponse().setContentType('text/plain; charset=utf-8');
}
HTML(sample/gadgetBar/gadgetBar_ajax.html)
<imart type="string" value=$date />

defaultOpen

defaultOpen
  • defaultOpenにtrueになる値を指定すると初期表示時に開いて表示されます。
  • defaultOpenにfalseになる値を指定すると初期表示時に閉じて表示されます。
JSP
<% 
Boolean sortableTrue = true;
Boolean sortableFalse = false; 
%>

<imui:gadgetBar>
  <imui:gadgetItem defaultOpen="<%= sortableTrue %>" >
    sample3_1
  </imui:gadgetItem>
  <imui:gadgetItem defaultOpen="<%= sortableFalse %>" >
    sample3_2
  </imui:gadgetItem>
</imui:gadgetBar>

onAjaxParameterExtend

onAjaxParameterExtend
  • サーバサイドで配列やオブジェクトを扱うサンプルになります。以下の二通りがあります。
    • クライアントサイドでImJson.toJSONString()でJSON文字列に変換し、サーバサイドでImJson.parseJSON()でJSON文字列からJavaScriptオブジェクトに変換する
    • シリアライズはjQuery.ajax()で任せ、サーバサイドでの取得方法を変更する
JSP
<imui:gadgetBar>
  <imui:gadgetItem href="sample/gadgetBar_ajax" onAjaxParameterExtend="onAjaxParameterExtend1" />
  <imui:gadgetItem href="sample/gadgetBar_ajax2" onAjaxParameterExtend="onAjaxParameterExtend2" />
</imui:gadgetBar>
<script type="text/javascript">
  function onAjaxParameterExtend1(obj) {
    var sampleObj = {};
    var sampleAry = ["sample",456];
    sampleObj = {
      string:"string",
      number:123,
      array:sampleAry
    }
    return ImJson.toJSONString(sampleObj)
  }
  function onAjaxParameterExtend2(obj) {
    return {'a': 'a', 'b': 'b', 'c': 'c', 'arr': [1, 2, 3]};
  }
</script>
routing-jssp-config/sample.xml
<?xml version="1.0" encoding="UTF-8"?>
<routing-jssp-config xmlns="http://www.intra-mart.jp/router/routing-jssp-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd ">
 
  <!-- サンプル向けの設定です。アクセス権の設定を行ってください。 -->
  <authz-default mapper="welcome-all" />
 
  <!-- imuiGadgetItemのコンテンツを取得 -->
  <file-mapping path="/sample/gadgetBar_ajax" page="sample/gadgetBar/gadgetBar_ajax" />
  <file-mapping path="/sample/gadgetBar_ajax2" page="sample/gadgetBar/gadgetBar_ajax" />
 
</routing-jssp-config>
サーバサイド JavaScript(sample/gadgetBar/gadgetBar_ajax.js)
var extension;
 
function init(request) {
    extension = ImJson.parseJSON(request.extension);
    Web.getHTTPResponse().setContentType('text/plain; charset=utf-8');
}
HTML(sample/gadgetBar/gadgetBar_ajax.html)
<imart type="repeat" list=extension.array item="record">
  <div>
    <imart type="string" value=record></imart>
  </div>
</imart>
サーバサイド JavaScript(sample/gadgetBar/gadgetBar_ajax2.js)
var extension = {};
 
function init(request) {
    extension.a = request['extension[a]'];
    extension.b = request['extension[b]'];
    extension.c = request['extension[c]'];
    extension.arr = request.getParameterValues('extension[arr][]');
    Web.getHTTPResponse().setContentType('text/plain; charset=utf-8');
}
HTML(sample/gadgetBar/gadgetBar_ajax2.html)
<imart type="repeat" list=extension item="record">
  <div>
    <imart type="string" value=record></imart>
  </div>
</imart>

ajax通信で取得したHTMLを返却する場合

  • このサンプルではリクエストへの属性として指定する方法でテーマが適用されていないHTMLを返却します。
JSP
<imui:gadgetBar>
  <imui:gadgetItem href="sample/gadgetBar_ajax">
    この文字列は削除され、hrefの指定先で取得したコンテンツが表示されます
  </imui:gadgetItem>
  <imui:gadgetItem href="sample/gadgetBar_ajax" loadRemote="false" >
    loadRemote="false"なのでこのまま表示されます
  </imui:gadgetItem>
</imui:gadgetBar>
routing-jssp-config/sample.xml
<?xml version="1.0" encoding="UTF-8"?>
<routing-jssp-config xmlns="http://www.intra-mart.jp/router/routing-jssp-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd ">
 
  <!-- サンプル向けの設定です。アクセス権の設定を行ってください。 -->
  <authz-default mapper="welcome-all" />
 
  <!-- imuiGadgetItemのコンテンツを取得 -->
  <file-mapping path="/sample/gadgetBar_ajax" page="sample/gadgetBar/gadgetBar_ajax" />
 
</routing-jssp-config>
サーバサイド JavaScript(sample/gadgetBar/adgetBar_ajax.js)
var $date = new Date().getTime();
 
function init(request) {
    request.setAttribute('imui-theme-builder-module','notheme');
}
HTML(sample/gadgetBar/gadgetBar_ajax.html)
<imart type="string" value=$date />