我有一个使用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,以及我的设置方法会话范围变量合适吗?
答案 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。