Oli*_*sse 1 xpages xpages-ssjs
我想知道我是否可以通过编程方式获取xpage或自定义控件的参数和/或属性.
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" id="layout">
<xp:this.properties>
<xp:parameter name="testcc.xsp" value="Test 1"></xp:parameter>
<xp:parameter name="index.xsp" value="Main"></xp:parameter>
</xp:this.properties>
...
Run Code Online (Sandbox Code Playgroud)
如何在重复控制中访问此参数列表以使用它?
编辑 你们两个都是对的,谢谢!但这仅适用于页面,而不适用于自定义控件.
编辑
你们两个都很棒:-)
但是:我应该修改我的问题:我有一个自定义控件,我定义了属性.在SAMe自定义控件中,我想在重复控件中访问这些属性.
您的答案似乎都假设访问这些属性来自视图(页面)级别,对吧?
我测试了Svens方式 - 如果我从页面级别访问CC中的道具,这是有效的.
编辑
所以这是CC的代码:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.properties>
<xp:parameter name="param" value="val"></xp:parameter>
</xp:this.properties>
<xp:label value="#{javascript:facesContext.getProperty('param')}"
id="label1">
</xp:label>
</xp:view>
Run Code Online (Sandbox Code Playgroud)
如您所见,我只想访问CC itselt中的属性,而不是从页面级别访问.
您可以通过访问facesContext来获取属性:
facesContext.getProperty("index.xsp")
Run Code Online (Sandbox Code Playgroud)
编辑:
如果在自定义控件中设置属性,则不会将属性添加到视图根.它们被设置为自定义控件的属性(com.ibm.xsp.component.UIIncludeComposite).
要访问它们,首先必须为您的CC提供ID:
<xc:ccProp id="myId" />
Run Code Online (Sandbox Code Playgroud)
这允许您使用getComponent()方法像组件一样访问自定义控件,并检索包含属性的属性属性:
<xp:label id="labelProperty">
<xp:this.value><![CDATA[#{javascript:
var cc:com.ibm.xsp.component.UIIncludeComposite = getComponent("myId");
var arrList:java.util.ArrayList = cc.getAttributes().get("properties");
arrList.get(0).getName()}]]>
</xp:this.value>
</xp:label>
Run Code Online (Sandbox Code Playgroud)
编辑2:
如果您不想为CC提供ID,则可以通过这种方式访问CC(此示例中为标签的父级):
自定义控件的代码:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.properties>
<xp:parameter name="param" value="val"></xp:parameter>
</xp:this.properties>
<xp:label id="label1">
<xp:this.value><![CDATA[#{javascript:
this.parent.getAttributes().get("properties").get(0).getName()
}]]></xp:this.value>
</xp:label>
<xp:label id="label2">
<xp:this.value><![CDATA[#{javascript:
this.parent.getAttributes().get("properties").get(0).getValue()
}]]></xp:this.value>
</xp:label>
</xp:view>
Run Code Online (Sandbox Code Playgroud)
希望这有助于澄清问题.
| 归档时间: |
|
| 查看次数: |
1771 次 |
| 最近记录: |