使用来自ssjs的Openlog。什么应该'这'是?

时间:2018-03-21 12:00:10

标签: logging xpages xpages-ssjs

我正在阅读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函数作为参数。

有人可以告诉我我做错了什么以及如何正确地将组件传递给函数?

2 个答案:

答案 0 :(得分:2)

在此背景下,这个&#39;是eventHandler。 eventHandler不是UIComponent。你应该通过&#39; this.getParent()&#39; (在这种情况下的链接)。

答案 1 :(得分:0)

正如Ferry所说,这指的是一个组件,而不是功能。因此,应该将组件提供给ssjs函数,例如this.getParent()。