Server イベントの起動により、その JavaScript コードと XPage コンテキストが、Web サーバー上のインタープリタに送信されます。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:inputText id="inputText1" value="#{requestScope.x}">
<xp:this.converter><xp:convertNumber type="number"></xp:convertNumber></xp:this.converter>
</xp:inputText><xp:span> x</xp:span><xp:br></xp:br>
<xp:inputText id="inputText2" value="#{requestScope.y}">
<xp:this.converter><xp:convertNumber type="number"></xp:convertNumber></xp:this.converter>
</xp:inputText><xp:span></xp:span> y<xp:br></xp:br><xp:span></xp:span>
<xp:inputText id="inputText3" value="#{requestScope.z}">
<xp:this.converter><xp:convertNumber type="number"></xp:convertNumber></xp:this.converter>
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<![CDATA[#{javascript:requestScope.z = requestScope.x + requestScope.y}]]>
</xp:this.action>
</xp:eventHandler></xp:inputText> x + y<xp:span></xp:span><xp:span></xp:span>
</xp:view>
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:inputText id="inputText1" value="#{sessionScope.x}">
<xp:this.converter><xp:convertNumber type="number"></xp:convertNumber></xp:this.converter>
</xp:inputText><xp:span> x</xp:span><xp:br></xp:br>
<xp:inputText id="inputText2" value="#{sessionScope.y}">
<xp:this.converter><xp:convertNumber type="number"></xp:convertNumber></xp:this.converter>
</xp:inputText><xp:span></xp:span> y <xp:br></xp:br>
<xp:button id="button1" value="x + y">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:sessionScope.z = sessionScope.x + sessionScope.y;
context.redirectToPage("xpage2.xsp")}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:view>
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"><xp:span></xp:span>
<xp:inputText id="inputText3" value="#{sessionScope.z}">
<xp:this.converter><xp:convertNumber type="number"></xp:convertNumber></xp:this.converter>
</xp:inputText> x + y<xp:span></xp:span>
<xp:span></xp:span>
</xp:view>
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:text escape="true" id="computedField1" value="#{javascript:session.getCommonUserName()}">
</xp:text>
</xp:view>
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:text escape="true" id="computedField1"
value="#{javascript:database.getAllDocuments().getCount().toFixed()}">
</xp:text> <xp:br></xp:br>
<xp:button id="button1" value="Create document">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:var doc = database.createDocument();
doc.appendItemValue("Subject", "my subject");
doc.save()}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:view>
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="document1" formName="form1"></xp:dominoDocument>
</xp:this.data>
<xp:table>
<xp:tr>
<xp:td><xp:label value="Subject:" id="subject_Label1" for="subject1"></xp:label></xp:td>
<xp:td><xp:inputText value="#{document1.subject}" id="subject1"></xp:inputText></xp:td>
</xp:tr>
</xp:table>
<xp:button id="button1" value="Create document">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:currentDocument.save();
context.redirectToPage("xpage2")}]]></xp:this.action>
</xp:eventHandler>
</xp:button></xp:view>
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:inputText id="inputText1"></xp:inputText><xp:br></xp:br>
<xp:inputText id="inputText2"></xp:inputText><xp:br></xp:br>
<xp:inputText id="inputText3">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<![CDATA[#{javascript:getComponent("inputText3").setValue(getComponent("inputText1").getValue() + getComponent("inputText2").getValue())}]]>
</xp:this.action>
</xp:eventHandler>
</xp:inputText>
</xp:view>
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="document1" formName="form1"></xp:dominoDocument>
</xp:this.data>
<xp:table>
<xp:tr>
<xp:td><xp:label value="Subject:" id="subject_Label1" for="subject1"></xp:label></xp:td>
<xp:td><xp:inputText value="#{document1.subject}" id="subject1"></xp:inputText></xp:td>
</xp:tr>
</xp:table>
<xp:button id="button1" value="Create document">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:document1.save();
requestScope.status = "Document created"}]]></xp:this.action>
</xp:eventHandler>
</xp:button><xp:br></xp:br>
<xp:text escape="true" id="computedField1" value="#{requestScope.status}"></xp:text>
</xp:view>
window.alert 機能はサーバースクリプトには使用できません。
この例は、システムログでアプリケーション出力をハイライトする 関数を示しています。
// Function for highlighting output to log
function printToLog(stuff) {
_dump("¥r¥nPRINT START¥r¥n");
_dump(stuff);
_dump("¥r¥nPRINT END¥r¥n");
}
// Test call
printToLog("Here's some stuff for the log.");
スクリプトでは、Java と同様に try 節、catch 節、finally 節を使用できます。 catch 節は例外が発生した場合に実行され、finally 節は常時実行されます。 このページのボタンでは、try ...catch メカニズムを使用して、計算結果フィールドにエラーを書き込んでいます。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:button id="button2" value="Create document">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:try {
doc.appendItemValue("Subject", "my subject");
} catch(e) {
requestScope.status = "Error: " + e;
}}]]></xp:this.action>
</xp:eventHandler>
</xp:button><xp:br></xp:br>
<xp:text escape="true" id="computedField1" value="#{requestScope.status}"></xp:text>
</xp:view>
このテストケースでは、doc を使用する前に定義していないため、例外が発生します。
例外をキャッチするように指定していない場合は、結果はランタイム環境によって異なります。 例えば、ブラウザや Notes クライアントでは、一般的なエラーメッセージを示すページが表示される場合があります。
検証については、message - エラー表示とmessages - 複数エラー表示 を参照してください。
ライブラリ | 説明 |
---|---|
Domino | このライブラリは、ユーザーデータとユーザーサーバー環境を照会および操作する NotesSession、NotesDatabase、NotesDocument、その他のクラスを含みます。 |
DOM | データストアが XML ベースではないため、現時点では使用されていません。 |
Runtime | このライブラリは、 さまざまなユーティリティクラスを使用可能にします。 |
Standard | このライブラリは、 さまざまなユーティリティクラスを使用可能にします。 |
XSP | このライブラリは、実行コンテキストへのアクセスを許可します。 |
@Functions | Notes @関数をエミュレートする関数。 |