XPagesは、IBM Notesプラットフォーム用のWebフレームワークです。 Lotus Domino 8.5で導入されました(確認が必要です) 。
これは、JSF(JavaServer Faces)に基づいており、IBM Notesデータを表現し操作するのに便利な拡張機能を多数備えています。
IBMはXPageのチュートリアルを提供しています。https : //www-10.lotus.com/ldd/ddwiki.nsf/dx/Tutorial-intro-to-XPages.htm
シーンの背後にあるバックエンドXPagesには、HTMLに似たXMLファイルがあります。 Domino Serverは最終的に実際のHTMLを作成し、これらのページをクライアントに送信します。ビジネスロジックはネイティブ JavaScript( "clientside JavaScript - CSJS")と擬似 JavaScript( "serverside JavaScript - SSJS")で実装されています。
XPagesはIBM Domino Designerの一部です。 XPageには余分なセットアップやインストールは必要ありません。
最初のXPageを作成するには、最初に新しいNSFを作成する必要があります。 IBM Domino Designerを開き、「 ファイル 」 - >「 新規 」 - >「 アプリケーション 」メニューを開きます。
ポップアップダイアログで次の設定を行います:
Hello World NSF
」などのタイトルを入力します。 hello-world.nsf
")。 新しいNSFが作成されます。
アプリケーションナビゲータのセクション「XPages」を右クリックし、「 new XPage ... 」を選択します。
HelloWorld
")。これにより、 "HelloWorld.xsp"という名前のファイルが作成されます。 新しい[HelloWorld XPage]をダブルクリックします。これは[XPages]セクションにあります。
「ソース」(エディタの一番下にある)タブを選択し、ページに簡単なテキストフィールドコンポーネントを追加します。これが結果になるはずです。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" pageTitle="Hello My World">
<xp:text id="simpleTextField" value="Hello World!!!!" />
</xp:view>
ページを保存してプロジェクトをビルドします(アプリケーション "Hello World NSF"を右クリックし、メニューエントリ "build"を選択します)。
次に、Internet Explorerのようなブラウザを開き、アプリケーションのNSFの新しいXPageに移動します。たとえば、 " http://mydominoserver.com/hello-world.nsf/HelloWorld.xsp "と入力すると、Hello Worldテキストが表示されます。
まず、 " message.properties
"ファイルをResources / Files /に作成します。例:
##############
# Test message.properties
##############
label.age=Enter your age:
validate.error.reqired.age=Sorry, but you have to give away the secret of your age ...
次に、リソースをXPageまたはカスタムコントロールに接続します。
<xp:this.resources>
<xp:bundle src="/messages.properties" var="appMsg" />
....
</xp:this.resources>
注: "var"は、XPageまたはカスタムコントロールでメッセージマップを参照するために使用する名前を定義します。
これで、サーバー側のJavaScript( #{javascript:appMsg.getString('...')}
)またはEL( #{appMsg['...']}
)でメッセージマップを使用できるようになりました。
使用例:
...
<!-- to show the error message: -->
<xp:messages />
<!-- use with ssjs: -->
<xp:text value="#{javascript:appMsg.getString('label.age')}" escape="false" />
<!-- use with EL: -->
<xe:djNumberSpinner value="#{myDoc.age}" maxLength="2" javaType="int">
<xp:this.validators>
<xp:validateRequired message="#{appMsg['validate.error.reqired.age']}" />
</xp:this.validators>
</xe:djNumberSpinner>
...