<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」内に記述します。
- XMLを作成する
-
ルートタグにmenusタグを記述し、使用する機能にあわせたXMLスキーマを読込む
※XMLスキーマの参照パスの間違いに注意してください
- 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タグを用いて、メニュー用のハイパーリンクを表示します。
- id
-
(必須)一意となる名前
※出力時に大文字で統一されます。
- image
- メニュー用アイコン(URL)
- text
- メニュー用ラベル
- href
- 遷移先
- css
- スタイルシート名
- visibleAuthority
-
表示されるユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- disableAuthority
-
表示しないユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- visibleGroupAuthority
-
表示されるユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
- disableGroupAuthority
-
表示しないユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
記述例
<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)をグループ化できます。
※サブメニューは配下のメニューや罫線など出力するものがない場合は表示されません。
[仕様]空のサブメニューは表示されない。
- id
-
(必須)一意となる名前
※出力時に大文字で統一されます。
- image
- メニュー用アイコン(URL)
- text
- メニュー用ラベル
- css
- サブメニューを囲むdivタグのスタイルシート名
- onclick
-
クリックイベント
※サブメニューの折畳みなどScriptがあれば設定
- visibleAuthority
-
表示されるユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- disableAuthority
-
表示しないユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- visibleGroupAuthority
-
表示されるユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
- disableGroupAuthority
-
表示しないユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
記述例
<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タグを用いて、メニューにテキストを表示します。
- id
-
(必須)一意となる名前
※出力時に先頭にLABEL_が付与され、大文字で統一されます。
- image
- メニュー用アイコン(URL)
- text
- メニュー用ラベル
- css
- スタイルシート名
- visibleAuthority
-
表示されるユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- disableAuthority
-
表示しないユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- visibleGroupAuthority
-
表示されるユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
- disableGroupAuthority
-
表示しないユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
記述例
<label id="MENUTEXT001" text="{@context:USER_CODE} {@context:USER_NAME}" />
💡textにはJSPのコマンド・テキスト変換機能により動的な値の出力もできます。
罫線を引く
lineタグを用いて、メニューに罫線を引きます。
- css
- スタイルシート名
- visibleAuthority
-
表示されるユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- disableAuthority
-
表示しないユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- visibleGroupAuthority
-
表示されるユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
- disableGroupAuthority
-
表示しないユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
記述例
<line css="LINE" />
JSPの実装
menuタグを記述し読込むメニュー定義XMLを指定してください。
- name
- メニュー定義XML名
- visible
-
表示される条件の判定式を記述
※trueで表示される
- disable
-
表示しない条件の判定式を記述
※trueで表示しない
- visibleAuthority
-
表示されるユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- disableAuthority
-
表示しないユーザーの権限
※カンマ区切りで複数定義可(OR条件)
- visibleGroupAuthority
-
表示されるユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
- disableGroupAuthority
-
表示しないユーザーの所属・職責
(様式)法人ID:支社ID:部署ID:職責
※カンマ区切りで複数定義可(OR条件)
記述例
<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ファイルを作成した場合
- Menu.xml
- Menu_en.xml
- Menu_en_us.xml
米国のユーザーはen_usが適用され、豪州や英国のユーザーはenが適用、
その他の英語圏でないユーザーは標準のMenu.xmlが適用されます。