Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpages dojo对话框选择的值_Xpages_Xpages Ssjs - Fatal编程技术网

Xpages dojo对话框选择的值

Xpages dojo对话框选择的值,xpages,xpages-ssjs,Xpages,Xpages Ssjs,我有一个使用dojo的对话框,它位于xpages视图操作的顶部,用于显示视图第一列之一的用户值,然后执行excel导出过程。我还添加了XSP.addClientLoad函数,以获得用户选择的值 在对话框的OK按钮上,我有下面关于客户端javascript的代码 var d=dijit.byId('#{javascript:compositeData.dialogID}'); var SelectedValues = document.getElementById("#{id:SelectedV

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

在对话框的OK按钮上,我有下面关于客户端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)
XSP.allowSubmit();
XSP.firePartial(null, "eventHandlerId", "refreshId");
将现有对话框选择的值保存到自定义控件的隐藏可编辑字段中的会话范围变量

这是设置范围变量的正确方法吗?另外,我想循环通过基于分类视图的会话范围变量,并将它们导出到xpages上,因此在此之后,我想触发SSJS,它将负责excel导入部分


因此,我的最终目标是,根据用户对对话框的选择,我希望运行excel导出功能(即ssjs),因此请帮助我如何从这里开始跳转到ssjs,以及我设置会话范围变量的方法是否合适?

您是否有必须在客户端运行的部分代码?如果没有,请尝试直接在服务器端写入。例如,要导出到Excel,您可能需要使用“window.open('some_url')”而不是“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>

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

context.redirectToPage()
是服务器端JavaScript。它不能在浏览器上运行,因此会抛出错误。作用域变量不能由客户端JavaScript直接更新,因为变量存储在服务器上。您需要触发服务器端代码来更新sessionScope,然后从服务器端重定向到Excel导出页面。回到了解何处运行、了解部分刷新、,是的,我的问题是如何从客户端javascript代码触发服务器端javascript,客户端javascript代码将执行sessionScope变量存储并导出到excel。如果你能分享任何参考资料,那就太好了。