我正在阅读openlog上的文档:
因为服务器端JavaScript脚本库没有上下文 哪个组件称为它们,您将无法使用它来传递 OpenLog的组件。相反,如果你想确定哪个 组件称为代码,您需要将组件传递给您 SSJS作为参数。
https://wiki.openntf.org/display/XOL/Using+from+SSJS+Script+Libraries
所以我有一个链接调用驻留在脚本库中的SSJS函数:
<xp:link escape="true" text="#{obj.name}" rendered="#{obj.internal eq '3'}">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="dlgAssessment"> <xp:this.action><![CDATA[#{javascript:openDialogAssessment(this);}]]></xp:this.action> </xp:eventHandler> </xp:link>
该函数将openlog注册失败如下:
function openDialogAssessment(component){
try {
try{
assessmentBean.removeAssessment("assessment");
}catch(e){
openLogBean.addError(e,component);
}
//... more code
}
如果我在openlog中查看日志结果,请阅读:
null - 开发者已经过了这个&#39;直接来自SSJS函数 脚本库/proposal.jss。请注意,SSJS脚本库有 没有组件的上下文。您必须将相关组件传递给 你的SSJS函数作为参数。
有人可以告诉我我做错了什么以及如何正确地将组件传递给函数?
答案 0 :(得分:2)
在此背景下,这个&#39;是eventHandler。 eventHandler不是UIComponent。你应该通过&#39; this.getParent()&#39; (在这种情况下的链接)。
答案 1 :(得分:0)
正如Ferry所说,这指的是一个组件,而不是功能。因此,应该将组件提供给ssjs函数,例如this.getParent()。