我有一个相当复杂的自定义控件,可能会在任何给定的XPage上多次使用。在控件中,我创建了几个视图范围变量,这些变量必须对特定的自定义控件是唯一的。我想做类似于viewScope.put(customControlID + "variableName","Stuff)的事情,但我不知道如何获取自定义控件的ID。
我有一个相当复杂的自定义控件,可能会在任何给定的XPage上多次使用。在控件中,我创建了几个视图范围变量,这些变量必须对特定的自定义控件是唯一的。我想做类似于viewScope.put(customControlID + "variableName","Stuff)的事情,但我不知道如何获取自定义控件的ID。
您可以使用this.getId()
在<xp:view>
级别获取当前自定义控件的ID。
如果将此ID放入复合数据变量中(例如compositeData.id
),则可以在自定义控件内部的任何地方使用该ID。
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
beforePageLoad="#{javascript:compositeData.id = this.getId()}" >
在SSJS中的使用:
viewScope.put(compositeData.id + "variableName","Stuff")
<xp:this.dataContexts>
<xp:dataContext
value="#{javascript:this.getId()}"
var="id">
</xp:dataContext>
</xp:this.dataContexts>
<xp:label id="label1" value="#{javascript:id}" />
...或者在EL中:
<xp:label id="label1" value="#{id}" />
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){}
}
<xp:label id="label1">
<xp:this.value><![CDATA[#{javascript:getCCId( this )}]]></xp:this.value>
</xp:label>