从页面级别获取属性/参数

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中的属性,而不是从页面级别访问.

Sve*_*ach 5

您可以通过访问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)

希望这有助于澄清问题.