在xpages中使用qtip

时间:2014-03-14 07:03:05

标签: xpages qtip

我试图为某些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'

      });


    });

1 个答案:

答案 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传递给客户端。