Xpages Dojo对话框中的选定值

时间:2018-07-09 18:55:06

标签: xpages xpages-ssjs

我有一个使用dojo的对话框,该对话框位于xpages视图操作的顶部,以从视图第一列之一中显示用户值,然后执行excel导出过程。我还添加了XSP.addClientLoad功能,以获取用户选择的值。

在对话框的“确定”按钮上,我在客户端javascript上具有以下代码。

var d=dijit.byId('#{javascript:compositeData.dialogID}');
 var SelectedValues = document.getElementById("#{id:SelectedValues}");
 SelectedValues.value =d.getSelectedValues();
 alert(d.getSelectedValues());
 context.redirectToPage("excelExporter2.xsp",false)

将现有对话框的选择值保存到Custom控件的隐藏可编辑字段中的会话范围变量。

这是设置范围变量的正确方法吗?我还想遍历基于视图的会话范围变量,并将其导出到xpages上,因此在此之后,我想触发SSJS,它将处理excel导入部分。

所以我的最终目标是基于对话框的用户选择,我想运行excel来导出功能(即ssjs),所以请帮助我如何从此处开始跳入SSJS,以及我的设置方法会话范围变量合适吗?

1 个答案:

答案 0 :(得分:0)

您是否有一部分代码必须在客户端运行?如果不是,请尝试立即将其写在服务器端。例如,要导出到Excel,则可以使用“ window.open('some_url')”代替。

否则,您可以使用此技巧在XPage / Custom控件上触发SSJS事件:

在XPage上的某个地方创建一个事件。确保它具有ID属性,并且事件名称不是标准事件(onChange,onClick)。将服务器代码放在您要运行的事件中。

<xp:eventHandler id="eventHandlerId" event="myEvent" submit="true"
    refreshMode="partial" refreshId="refreshId">
    <xp:this.action><![CDATA[#{javascript:peformSSJSAction();}]]></xp:this.action>
</xp:eventHandler>

从客户端Javascript触发事件。

XSP.allowSubmit();
XSP.firePartial(null, "eventHandlerId", "refreshId");

参数“ refreshId”是代码完成后部分刷新期间刷新区域的刷新ID。