ShowTable of Contents
treeNodesプロパティの解説
XPages Extension Libraryでは、リンクやボタンを設定する場合などに、treeNodesプロパティを使用する場合が多くあります。
当記事ではこのtreeNodesプロパティについて解説します。
たとえば、以下のコントロールのプロパティでtreeNodeが使用されています。
・Application Layoutコントロール
・Bread Crumbsコントロール
・pop-upコントロール
・toolbarsコントロール
・list of linksコントロール
・Outlineコントロール
treeNodeの一覧
以下にtreeNodesプロパティの一覧を示します。
「すべてのプロパティ」で表示される名称 | プロパティで表示される名称 |
basicLeafNode | BasicNode |
basicContainerNode | ContainerNode |
separatorTreeNode | SeparatorNode |
loginTreeNode | Login or Logout Node |
userTreeNode | User Node |
pageTreeNode | Page Link Node |
repeatTreeNode | Repeat Node |
beanTreeNode | Managed Bean Node |
dominoViewListTreeNode | View or Folder List |
dominoViewEntriesTreeNode | View or Folder Entries |
basicLeafNode
標準のノード。1つのリンクまたは1つのボタンを設定します(リンクとなるかボタンとなるかはコントロールに依存します)。
separatorTreeNodeを除き、他のTreeNodeはこのbasicLeafNodeと同じプロパティを持ちます。
プロパティ | 説明 |
enabled | Nodeが有効かどうかを指定する。Nodeがリンクの場合、テキストのみ表示される。Nodeがボタンの場合、
無効なボタン(グレーで表示されクリックできない)が表示される。デフォルトは有効。(未確認) |
href | リンクするURL。絶対または相対URL。※1※2 |
image | Nodeに表示する画像。labelプロパティと同時に指定した場合、labelの左側に表示される。※3 |
imageAlt | 画像の代替テキスト |
imageHeight | 画像の高さ |
imageWidth | 画像の幅 |
label | Nodeに表示するテキスト |
loaded | Nodeをロードするかどうかを指定 |
onClick | Nodeをクリックしたときのイベント。クライアントサイドのJavaScriptとして記述。
hrefプロパティがブランクのときのみ有効。 |
rendered | HTMLにNodeをレンダリングするかどうかを指定。 |
role | Nodeのrole属性を指定 |
selected | Nodeが選択されているかどうかのプロパティ。有効の場合、表示イメージが変更される。(未確認) |
submitValue | サーバーに送信される値。送信された値は、サーバーサイドJavaScriptで、context.getSubmittedValue()メソッドを
呼び出すことで取得可能。 |
title | Nodeのtitle属性を指定 |
※1 絶対URLを記述する場合、"http://"~から記述。
※2 プロパティにはtarget属性がない。リンクを別ウィンドウで開く場合、onClickイベントで下記のように記述する。
※3labelの下に画像を表示したい場合、styleプロパティの"背景"を指定する
basicContainerNode
他のリンクの"コンテナ(入れ物)"となるNodeです。
以下にbasicContainerNodeのプロパティを示す。下記以外のプロパティは"basicLeafNode"と同一です。
プロパティ | 説明 |
children | 子Nodeを設定。 |
expanded | 初期状態で展開するかどうかを指定。 |
transparent | trueにすると、コンテナは表示されず、子Nodeだけが表示される。デフォルトはfalse。複数の子ノードの表示を
いっせいに切り替えたいとき、子ノードの loaded プロパティ(またはrenderedプロパティ)をそれぞれ設定するの
ではなく、当プロパティを有効にし、当Nodeのloaded プロパティまたはrenderedプロパティで切り替える。 |
separatorTreeNode
ノードのツリーに"区切り"を表示するノードです。
以下は"List of Links"コントロールで、basicContainerNodeの子Node(basicLeafNode)の2つ目と3つ目の間にseparatorTreeNode
を挿入した場合の表示イメージ。
プロパティ | 説明 |
loaded | Nodeをロードするかどうかを指定 |
rendered | HTMLにNodeをレンダリングするかどうかを指定。 |
loginTreeNode
デフォルトでログイン/ログアウトを表示するノード。プロパティはbasicLeafNodeと同一。
ユーザ認証されていない場合、以下のリンクを表示する。
ラベルは"Login"、リンク先は"(データベースパス)?openDatabase&login"。
ユーザ認証済みで、サーバーでセッション認証が設定されている場合、以下のリンクを表示する。
ラベルは"Loguout"、リンク先は"(データベースパス)?logut"。
※サーバーでベーシック認証(セッション認証に"なし"を設定)が設定されている場合、何も表示されない。
Tips.ラベルを日本語化する
labelプロパティを設定すると、上書きされる。ラベルを日本語で表示する場合のサンプルコードは下記。
if(context.getUser().isAnonymous()){
return "ログイン";
}
else
{
return "ログアウト";
}
Tips.リダイレクト先を指定する
ログアウト後に任意のリダイレクト先を指定したい場合などは、Redirecttoパラメータを指定する必要がある。
その場合には、ログアウト、ログインのロジックを自作する。以下参考。
XPages Tutorial Part 7: バナーのログイン/ログアウトボタン
http://notesdominoliaison.blogspot.jp/2009/12/xpages-tutorial-part-7.html
認証を要求する URL コマンド
http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_ABOUT_URL_COMMANDS_FOR_REQUIRING_AUTHENTICATION.html
userTreeNode
ユーザー名を表示するノード。通常、loginTreeNodeと同時に使用する。
デフォルトでは共通名を表示する。認証されていない場合、"Anonymous"と表示される。
プロパティ | 説明 |
userField | ユーザ名の表示形式を指定する。省略形の場合は"abbreviatedName"、階層名の場合は
"canonicalName"を指定する。 |
pageTreeNode
pageTreeNodeを使用すると、アプリケーション内の別ページに簡単にリンクできます。
basicLeafNodeに加えて3つのプロパティを持っています。
プロパティ | 説明 |
page | リンクするXPageの名前を指定します。ドロップダウンリストから選択できる(下図)。pageTreeNodeには
hrefプロパティはなく、このpageプロパティでリンク先を指定する。
|
queryString | pageプロパティで指定したリンクにQueryStringを追加する。たとえば、既存の文書を編集モードで開く場合、
下記のように指定する。XPagesで使えるQueryStringについては、 XPages データソース解説 - URL パラメータ
参照。
例.documentId=855FA9D93EC7F70749257AC20019B5A0&action=editDocument |
selection | Application Layout コントロールのプロパティにpageTreeNodeを指定したときに使用する。正規表現で指定。
Application Layout コントロールのnavigationPathプロパティの値がselectionプロパティの正規表現に一致
する場合、CSSの lotusSelected クラスがこのNodeに自動的に追加される。
※Application Layout コントロールのプロパティにpageTreeNodeを指定した場合、selection プロパティを指定
していなくても、現在のページが page プロパティに一致する場合、 lotusSelected クラスがNodeに追加される。 |
repeatTreeNode
repeatTreeNodeは、繰り返しコントロールと同じように、valueプロパティに複数値を持たせることで、子のtreeNodeを繰り返し
表示することができます。
プロパティ | 説明 |
value | 繰り返しに使用される値を指定 |
var | valueプロパティの個々の値にアクセスするための変数名 |
indexVar | valueプロパティのインデックス番号にアクセスするための変数名 |
children | 繰り返し表示するtreeNode |
以下に、List of Linksコントロールで、添付ファイルへのリンクを作成する例を示します。
①各プロパティの指定
②basicLeafNodeのhrefプロパティに指定するJavaScript
var xspUrl = context.getUrl();
xspUrl.getScheme() + "://" + xspUrl.getHost() +"/"+ database.getFilePath() + "/0/"+ currentDocument.getDocument().getUniversalID() + "/$FILE/"+val;
beanTreeNode
dominoViewListNode
アプリケーション内のビューまたはフォルダのリストを表示します。
リンク先を指定するためには、onClickイベントやhrefプロパティにロジックを記述する必要があります。
プロパティ | 説明 |
databaseName | ビューまたはフォルダの一覧を表示するデータベースパスを指定する。ブランクの場合には現在のデータベース |
var | 個々のエントリにアクセスする変数名を指定する |
views | ビューの一覧を表示するか否かを指定する。デフォルト true |
folders | フォルダの一覧を表示するか否かを指定する。デフォルト true |
dominoViewEntriesTreeNode
dominoViewEntriesTreeNodeはビューを使用して、繰り返しノードを表示します(repeatTreeNodeで、データソースにビューを指定した
場合とほぼ同様のことができます)。
プロパティ | 説明 |
databaseName | 使用するビューがあるデータベースパスを指定する。ブランクの場合には現在のデータベース |
viewName | 使用するビュー名を指定する |
var | 個々のエントリにアクセスする変数名を指定する |
labelColumn | ラベルとして指定する列のプログラム名を指定する(下図)
|
keys | 指定したキーにマッチするエントリのみ使用する。getAllDocumentsByKeyメソッドの1つ目のパラメータと同様。 |
keyExactMatch | keysプロパティとあわせて使用する。完全にkeysと一致するエントリのみを返す。getAllDocumentsByKeyメソッドの
2つ目のパラメータと同様。 |
以下に、List of Linksコントロールでビューを使用して下記のようなリンクを生成する例を示す。
1.1列目にソート順、2列目にラベル(プログラム名label)、3列目にURLを表示するビュー(ビュー名links)を作成する。
2.下記のように指定
※④では下記のロジックを指定
viewEntry.getColumnValues()[2];