XPage:SSJS 函数可以在不放入库的情况下重用吗?

问题描述 投票:0回答:3

我有一个 ssjs 函数,仅在独立的 XPage 自定义控件中调用几次。

有没有办法将此函数保留在 XPage/CustomControl 本身中并直接调用它,而不将其存储在单独的 javascript 库中?

xpages-ssjs
3个回答
2
投票

我赞同乔治所说的。将函数放入库中,但仅将其作为资源包含在将执行调用的自定义控件/xpage 上,因此不会将其加载到不需要的其他页面/控件上


1
投票

在我看来这是不可能的,因为您没有“全局范围”,因此您无法从 xpage/自定义控件中的不同事件引用您的函数。你必须把这个 SSJS 函数放入库中!


1
投票

这就是服务器端 JavaScript 在 XPage(或自定义控件)中随处可用的方式,而无需将其放置在脚本库中:

就在

<xp:view>
下:

<xp:this.resources>
    <xp:script clientSide="false">
        <xp:this.contents>
            <![CDATA[${javascript:
                var testA = "123";
                function testB(){
                    return "123";
                }
                return true;
            }]]>
        </xp:this.contents>
    </xp:script>
</xp:this.resources>

备注:

  • 代码必须以
    return true
    结尾,否则服务器解析 js 代码时会产生错误。
  • <xp:view>
    资源按照它们在 XML 源中列出的顺序加载。如果您的代码依赖于其他代码,请确保正确排序。
  • 我之前的答案(如下)有一个复杂之处,即必须转义引号和新行,而且Domino 9附带的javascript引擎已经过时(ES版本3)也无济于事。

2017 年之前的回答:

添加一个 ComputedField(例如将其命名为“

local_ssjs
”)并让它生成所需的共享 js 代码作为字符串值。

例如:

"function returnFour(){retrun (4)};"

如果您遇到这种情况,请获取共享代码并使用

eval()
函数来 include 它。

var sharedCode = getComponent("local_ssjs").getValue(); eval(sharedCode); var xFour = returnFour();

即使计算字段仅包含函数定义,也可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.