我试图为某些xpage组件显示qtip2。为了使它具有通用性,我创建了一个自定义控件(fieldID& componentID作为自定义属性)。我有一个视图,其中包含所有fieldID和每个id的相关帮助文本(这是唯一的)
我的问题是我无法使用输入参数从CSJS调用SSJS函数。请参阅下面的代码。如果我硬编码fieldID(getFieldHelp('" + fieldID +"'))一切正常,但是当我传递变量时,它将返回null值。任何帮助将不胜感激。提前谢谢。
脚本块
<xp:scriptBlock id="scriptBlock2"
value="var fieldID=#{compositeData.fieldID};var componentID=#{compositeData.componentID};">
</xp:scriptBlock>
客户端加载事件
alert(componentID+"~~~~~~~~~~~"+fieldID)
var helpContent="#{javascript:getFieldHelp('"+fieldID+"')}"
alert(helpContent)
$(document).ready(function()
{
x$("#{id:link_Test}").qtip({
//x$(compid).qtip({
content: "helpContent",
style: 'qtip-tipsy qtip-shadow'
});
});
答案 0 :(得分:1)
这不起作用。如果要将ClientSide变量'fieldID'发送到SSJS(getFieldHelp),则必须使用Jeremy Hodge.中的ExecuteOnServer函数,因为您必须将此变量POST到服务器。
但是你为什么不使用:
var helpContent ="#{javascript:getFieldHelp(compositeData.fieldID)}"
假设getFieldHelp是SSJS函数,并且两个代码片段都在同一个组件中。 =) (maby你必须将#更改为$才能获得compositeData。)
<强>更新强> 我做了一些关于在CSJS onClientLoad事件中获取compositeData.FieldID的测试。 我想出的是:
<xp:scriptBlock>
<xp:this.value><![CDATA[XSP.addOnLoad(function(){
alert("#{javascript:return compositeData.fieldId}");
});]]></xp:this.value>
</xp:scriptBlock>
我使用XSP.addOnLoad()
执行CSJS(onClientLoad),在xp:scriptBlock
内部我可以将compositeData传递给客户端。