从脚本库调用ssjs的csjs无法正常工作

时间:2017-02-24 10:04:33

标签: xpages xpages-ssjs

我有一个客户端脚本,我在其中启动一些SSJS来收集驻留在strings.properties文件中的字符串值:

function confirmBeforeDelete(){
    var msgEmptySelection = "#{javascript:strings['empty']}";
    var msgConfirm = "#{javascript:strings['confirm']}";
    if(!XSP.isViewPanelRowSelected("#{id:vwPnlDefault}", "col1")) {
        !XSP.alert(msgEmptySelection);
        return false;
    }
    if(!XSP.confirm(msgConfirm)) {return false;}    
}

这很好用。 但是当我将脚本存储在csjs库中时,我的短信变为:#{javascript:strings [' empty']}和#{javascript:strings ['确认']}。 我做错了什么?

1 个答案:

答案 0 :(得分:6)

您不能将带有SSJS部分的CSJS代码放入CSJS库中。 SSJS部分首先在服务器上执行,然后将修改后的代码发送给客户端。 CSJS库不变地发送给客户端。这就是你在那里看到SSJS代码的原因。

您可以为函数添加参数

function confirmBeforeDelete(msgEmptySelection, msgConfirm, vwPnlDefaultId){
    if(!XSP.isViewPanelRowSelected(vwPnlDefaultId, "col1")) {
        !XSP.alert(msgEmptySelection);
        return false;
    }
    if(!XSP.confirm(msgConfirm)) {return false;}    
}

这样该函数就是纯CSJS代码,可以存储在CSJS库中 您可以使用以下参数在XPage中调用您的函数:

confirmBeforeDelete("#{javascript:strings['empty']}", "#{javascript:strings['confirm']}", 
                    "#{id:vwPnlDefault}")