Custom controls 获取自定义控件的ID
我有一个相当复杂的自定义控件,可以在任何给定的XPage上多次使用。在控件中,我创建了两个viewScope变量,这些变量必须是特定自定义控件的唯一变量。我想做一些类似viewScope.put(customControlID+“variableName”,“Stuff”)的事情Custom controls 获取自定义控件的ID,custom-controls,xpages,Custom Controls,Xpages,我有一个相当复杂的自定义控件,可以在任何给定的XPage上多次使用。在控件中,我创建了两个viewScope变量,这些变量必须是特定自定义控件的唯一变量。我想做一些类似viewScope.put(customControlID+“variableName”,“Stuff”)的事情 但是我不知道如何获取自定义控件ID,您可以在级别使用this.getId()获取当前自定义控件ID 如果将此ID放入compositeData变量(例如,compositeData.ID),则可以在自定义控件中任意位置
但是我不知道如何获取自定义控件ID,您可以在
级别使用this.getId()
获取当前自定义控件ID
如果将此ID放入compositeData变量(例如,compositeData.ID
),则可以在自定义控件中任意位置使用该ID
SSJS中的用法:
viewScope.put(compositeData.id+“variableName”、“Stuff”)
通常,ID的名称类似于“_id2”、“_id8”、…以下是另一个作为SSJS函数的解决方案:
function getCCId( cmp:javax.faces.component.UIComponent):string{
try{
if( typeof( cmp ) === 'com.ibm.xsp.component.UIIncludeComposite' ){
return cmp.getId();
}
return getCCId( cmp.getParent() )
}catch(e){}
}
函数爬升组件树,直到找到父CC,然后返回id
您可以在如下标签中使用f.e.:
<xp:label id="label1">
<xp:this.value><![CDATA[#{javascript:getCCId( this )}]]></xp:this.value>
</xp:label>
您可以使用dataContext变量:
<xp:this.dataContexts>
<xp:dataContext
value="#{javascript:this.getId()}"
var="id">
</xp:dataContext>
</xp:this.dataContexts>
然后可以在SSJS中作为id访问该变量
<xp:label id="label1" value="#{javascript:id}" />
…或在EL中:
<xp:label id="label1" value="#{id}" />
克努特,这是一个相当聪明的方法。这也是一个非常方便的解决方案。