<usax:menu>メニュー出力タグ

XML定義を読込んでメニューを出力するJSPカスタムタグ。 HTML出力イメージ

   <span id="LABEL_SUB0001">受注</span><br>
   <div id="SUB0001">
    <a id="SUB0001_01" href="#!"
     onclick="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='/order/input.jsp'}">
     新規受注入力</a><br>
    <a id="SUB0001_02"
     href="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='/order/index.jsp'}">
     受注検索</a><br>
   </div>
   <br>

   <span id="LABEL_SUB1001">売上</span><br>
   <div id="SUB1001">
    <a id="SUB1001_01" href="#!"
     onclick="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='/completion/input.jsp'}">
     検収受領</a><br>

    <span id="LABEL_SUB1001_02">請求</span><br>
    <div id="SUB1001_02">
     <a id="SUB1001_02_01" href="#!"
      onclick="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='/claim/input.jsp'}">
      請求処理</a><br>

     <a id="SUB1001_02_02" href="#!"
      onclick="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='/claim/close.jsp'}">
      入金消込</a><br>
    </div>
    <br>

    <hr>

    <a id="HOME" href="#!"
     onclick="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='/home.jsp'}">
     ホーム</a>

    <a id="SIGN_OUT" href="#!"
     onclick="javascript:if (!HTTPRequest.isLocked()) { USAX.menu(); USAX.callEvent('signout'); }">
     サインアウト</a>
   </div>
  
💡上記のメニューでは画面ロック制御および開いているメニューを閉じた後に指定画面に遷移するScriptを記述しています。

メニュー定義の作成

メニュー定義はXML形式で、ルートタグ「menus」内に記述します。
  1. XMLを作成する
  2. ルートタグにmenusタグを記述し、使用する機能にあわせたXMLスキーマを読込む
    ※XMLスキーマの参照パスの間違いに注意してください
  3. linkタグのhref属性にてリンク先やScriptを記述する
記述例

   <menus
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="../../cam/usax/resource/Menu.xsd"
    controller="jp.co.cam.usax.web.tag.menu.impl.MenuResourceObject"
    description="{定義内容の説明}">

    <!-- メニュー・コンテンツを定義 -->

   </menus>
  
💡URLは「~/」を記述することでコンテキスト・ルート付きのアドレスに変換されます。

メニュー・リンクの作成

linkタグを用いて、メニュー用のハイパーリンクを表示します。
記述例

    <link id="HOME" text="ホーム"
     visibleAuthority="PUBLIC"
     href="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='~/home.jsp'}" />

    <link id="SIGN_OUT" text="サインアウト"
     visibleAuthority="PUBLIC"
     href="javascript:if (!HTTPRequest.isLocked()) { USAX.menu(); USAX.callEvent('signout'); }" />
  
💡URLは「~/」を記述することで"/コンテキスト・ルート"を付与したアドレスに変換されます。
💡textにはJSPのコマンド・テキスト変換機能により動的な値の出力もできます。

サブメニューの作成

menuタグを用いて、メニュー(link)をグループ化できます。
※サブメニューは配下のメニューや罫線など出力するものがない場合は表示されません。
 [仕様]空のサブメニューは表示されない。
記述例

    <menu id="SUB0001" text="受注"
     visibleAuthority="SALES_MANAGER, SALES">
     <link id="SUB0001_01" text="新規受注入力"
      href="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='~/order/input.jsp'}" />

     <link id="SUB0001_02" text="受注検索"
      href="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='~/order/index.jsp'}" />
    </menu>

    <menu id="SUB1001" text="売上"
     visibleAuthority="SALES_MANAGER">
     <link id="SUB1001_01" text="検収受領"
      href="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='~/completion/input.jsp'}" />

     <menu id="SUB1001_02" text="請求">
      <link id="SUB1001_02_01" text="請求処理"
       href="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='~/claim/input.jsp'}" />

      <link id="SUB1001_02_02" text="入金消込"
       href="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='~/claim/close.jsp'}" />
     </menu>
    </menu>

    <line />

    <link id="HOME" text="ホーム"
     visibleAuthority="PUBLIC"
     href="javascript:if (!HTTPRequest.isLocked()) { HTTPRequest.lock(); USAX.menu(); window.location='~/home.jsp'}" />

    <link id="SIGN_OUT" text="サインアウト"
     visibleAuthority="PUBLIC"
     href="javascript:if (!HTTPRequest.isLocked()) { USAX.menu(); USAX.callEvent('signout'); }" />
  
💡menuタグはmenuタグ内にも記述でき、複数階層が表現できます(デザインはCSSにて対応)。

テキストの表示

labelタグを用いて、メニューにテキストを表示します。
記述例

   <label id="MENUTEXT001" text="{@context:USER_CODE} {@context:USER_NAME}" />
  
💡textにはJSPのコマンド・テキスト変換機能により動的な値の出力もできます。

罫線を引く

lineタグを用いて、メニューに罫線を引きます。
記述例

   <line css="LINE" />
  

JSPの実装

menuタグを記述し読込むメニュー定義XMLを指定してください。
記述例

   <usax:menu name="/jp/co/hogehoge/resource/Menu" />
  

国際化対応

メニュー定義は多言語化されており、ファイル名に言語コード及び国コードを付加したものを
複数配置することで多国籍ユーザー向けのシステムが容易に開発できます。 (様式)
Menu_言語コード_国コード.xml / Menu_言語コード.xml
(例)Menu_en_us.xml / Menu_ja.xml

適用されるアトリビュート定義ファイルの優先順位

英語を例とした適用される優先順位は以下の通り
Menu.xml < Menu_言語コード.xml < Menu_言語コード_国コード.xml

(例)英語対応にて以下の3ファイルを作成した場合
米国のユーザーはen_usが適用され、豪州や英国のユーザーはenが適用、
その他の英語圏でないユーザーは標準のMenu.xmlが適用されます。

©Camel engineering LLP