我有一个客户端脚本,我在其中启动一些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 ['确认']}。 我做错了什么?
答案 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}")