Extension Library と XPages を使用して、Web ベースのワークフロー アプリケーションを構築しています。機能の 1 つは、ダイアログを表示して、次の承認者を選択してから送信することです。
新しいドキュメントの場合、ダイアログが表示され、読み取りモードのときにも表示されます。保存されたドキュメントに対して開かれることはありません。ダイアログはCSJSで開きますが、SSJSで動作する必要があります。コードの一部を次に示します。
xpMain.xsp
ccButtons
には、 との 2 つのカスタム コントロールが含まれていますccWFloDialogs
。
ccButtons 「送信」ボタン:
getComponent('dlgNextOwner').show();
ccWFloDialogs "dlgNextOwner" ダイアログ:
<xe:dialog id="dlgNextOwner" title="Select Supervisor">
<xe:formTable id="ftDlgNextOwner" formTitle="Select Supervisor"
formDescription="You may select a different supervisor."
disableErrorSummary="true">
<xp:this.facets>
<xe:formRow id="formRow1" xp:key="footer" for="txtWFloNextOwner"
labelWidth="125px">
<xp:inputText id="txtWFloNextOwner" style="width:200px"
value="#{viewScope.nextOwner}">
</xp:inputText>
<xe:namePicker id="npNextOwner" dialogTitle="Select Supervisor"
for="txtWFloNextOwner">
<xe:this.dataProvider>
<xe:dominoNABNamePicker addressBookSel="all-public"></xe:dominoNABNamePicker>
</xe:this.dataProvider>
</xe:namePicker>
</xe:formRow>
</xp:this.facets>
</xe:formTable>
</xe:dialog>
CSJS では、次のコードを使用すると、ダイアログが正常に開きます。
XSP.openDialog("#{id:dlgNextOwner}");
拡張ライブラリの Mark Hughes のピックリストも使用しています。コントロールとデータ ソースを含むパネルを削除すると、SSJS にダイアログが表示されます。コードはカスタム コントロールにありますが、直接 XPage にある場合でも問題は同じです。パネルのコードは次のとおりです。
<xp:panel
id="vendorDiv">
<xp:this.data>
<xp:dominoView
var="nvVend"
viewName="V_Vend"
ignoreRequestParams="true"
databaseName="other/lookupdb.nsf"
startKeys="#{javascript:viewScope.srchVend}">
</xp:dominoView>
</xp:this.data>
<xe:formTable
id="ftGetVendor"
disableErrorSummary="true"
labelPosition="above">
<xe:formRow
id="frVendor"
for="cfVendorName"
label="Name of the Vendor:">
<xp:text
escape="true"
id="cfVendorName"
value="#{currentDocument.VendorName}"
style="width:200px">
</xp:text>
<xc:viewpicklist
rowsPerPage="15"
buttonImage="./add.png"
tableClass="tablecellgreen"
headerClass="headerclass"
rowClass="odd, even"
searchBar="false"
searchButtonText="Search"
searchButtonClass="button2"
searchBarClass="headerclass"
pagerStyleFirst="navbutton1"
pagerStylePrevious="navbutton2"
pagerStyleCurrent="navbutton4"
pagerStyleNext="navbutton2"
pagerStyleLast="navbutton3"
typeAheadBar="true"
select="Column"
onReturn="Set Scope Value"
bottomBarClass="bottomround headerclass"
cancelButtonText="Cancel"
cancelButtonClass="button2 floatthisright"
type="Single Value"
finishButtonText="Finish"
finishButtonClass="button2 floatthisright"
multiSelectButtonAddImg="./add.png"
multiSelectButtonRemoveImg="./delete.png"
picklistButtonClass="button"
openDialogWith="Link"
picklistLinkImg="./add.png"
multiSelectLinkAddImg="./add.png"
multiSelectLinkRemoveImg="./delete.png"
selectWith="Link"
clearSearchImg="./cross.png"
SelectCellWidth="30px"
dialogID="dlgVend"
dialogTitle="Select a Vendor"
dialogWidth="80%"
refreshID="vendorDiv"
ssjsSelectFunction="getVendorInfo"
varName="viewScope.vendorInfo"
datasrc="nvVend"
selectColumn="4"
linkImg="./add.png"
typeAheadVar="viewScope.srchVend">
<xc:this.viewColumn>
<xp:value>0</xp:value>
<xp:value>1</xp:value>
<xp:value>2</xp:value>
<xp:value>3</xp:value>
</xc:this.viewColumn>
</xc:viewpicklist>
</xe:formRow>
<xe:formRow
id="frVendorStatus"
for="cfVendorStatus"
label="Vendor Registration Status:">
<xp:text
escape="true"
id="cfVendorStatus"
value="#{currentDocument.VendorStatus}">
</xp:text>
</xe:formRow>
<xe:formRow
id="frVendorCountry"
for="cfVendorCountry"
label="Country Name:">
<xp:text
escape="true"
id="cfVendorCountry"
value="#{currentDocument.VendorCountry}">
</xp:text>
</xe:formRow>
</xe:formTable>
</xp:panel>
要求されたベンダー情報は、問題やエラーなしでフィールドに入力されます。ただし、ここに何かがあり、SSJS を使用してダイアログを開くのを妨げているようです。
誰かが私が行方不明になっている明らかなものを見ることができますか? データ ソースはパネルにあり、ignoreRequestParams は true です (そうでない場合は機能しません)。
主なデータ ソースは XPage コンテキスト全体にあります。メイン パネルの外に ccWFloDialog カスタム コントロールを追加し、データ ソースをパネルに変更しようとしましたが、うまくいきませんでした。
何か案は?