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

Xpages 从页面级别获取属性/参数,xpages,xpages-ssjs,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" va

我想知道是否可以通过编程方式获取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>
...

...
如何访问此参数列表以使用它,例如在重复控制中

编辑 你们都是对的,谢谢!但这只在页面上有效,在自定义控件中无效

编辑

你们都很棒:-)

但是:我应该修改我的问题: 我有一个自定义控件,在其中定义了属性。在同一自定义控件中,我希望在重复控件中访问这些属性

您的两个答案似乎都假设对这些属性的访问是从视图(页面)级别进行的,对吗

我以这种方式测试了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>


正如您所看到的,我只想访问CC itselt中的属性,而不是从页面级别访问属性。

您可以通过访问facesContext获得属性:

编辑:

如果在自定义控件中设置属性,则不会将属性添加到视图根目录中。这些属性被设置为自定义控件(com.ibm.xsp.component.uiite)的属性

要访问它们,您首先必须为您的CC提供一个Id:

<xc:ccProp id="myId" />

这允许您像使用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>

编辑2:

如果不想给CC一个ID,可以通过这种方式访问CC(在本例中,它是标签的父项):

自定义控件的代码:



希望这有助于澄清问题。

您可以通过访问facesContext获取属性:

编辑:

如果在自定义控件中设置属性,则不会将属性添加到视图根目录中。这些属性被设置为自定义控件(com.ibm.xsp.component.uiite)的属性

要访问它们,您首先必须为您的CC提供一个Id:

<xc:ccProp id="myId" />

这允许您像使用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>

编辑2:

如果不想给CC一个ID,可以通过这种方式访问CC(在本例中,它是标签的父项):

自定义控件的代码:



希望这有助于澄清问题。

要获取属性列表,可以使用
视图。getProperties()
。它返回一个
java.util.List
对象,您可以使用该对象循环遍历各个属性(这些属性是
com.ibm.xsp.complex.Parameter
的对象)。下面是片段

var allProperties:java.util.List = view.getProperties();
for (var i=0 ; i<allProperties.size() ; i++) {
    var property:com.ibm.xsp.complex.Parameter = allProperties.get(i);

    // property.getName();
    // property.getValue();
}

要获取属性列表,可以使用
视图.getProperties()
。它返回一个
java.util.List
对象,您可以使用该对象循环遍历各个属性(这些属性是
com.ibm.xsp.complex.Parameter
的对象)。下面是片段

var allProperties:java.util.List = view.getProperties();
for (var i=0 ; i<allProperties.size() ; i++) {
    var property:com.ibm.xsp.complex.Parameter = allProperties.get(i);

    // property.getName();
    // property.getValue();
}

如果您想要在Xpage的各个部分使用值,无论是直接在页面上、在自定义控件中还是在重复中,我建议您将这些值放入sessionScope变量中。这允许您在用户在Xpage上输入信息时轻松地更改它们

例如,
sessionScope.PODocUNID=poDoc.getDocument().getUniversalID()
会将我正在处理的采购订单文档的UNID放入名为PODocUNID的sessionScope变量中。然后,只要在代码中引用sessionScope.PODocUNID,就可以随时提取该值


或者,您也可以使用Russ Maher当前最喜欢的玩具Managed Bean(请参阅他在9中的Notes上的三部分视频,从:)

如果您想在Xpage的各个部分上使用值,无论是直接在页面上、在自定义控件中还是在重复中,我建议您将这些值放入sessionScope变量中。这允许您在用户在Xpage上输入信息时轻松地更改它们

例如,
sessionScope.PODocUNID=poDoc.getDocument().getUniversalID()
会将我正在处理的采购订单文档的UNID放入名为PODocUNID的sessionScope变量中。然后,只要在代码中引用sessionScope.PODocUNID,就可以随时提取该值


或者,您可以使用Russ Maher当前最喜欢的玩具Managed Bean(请参见第9章Notes中的三部分视频,从:)

Hmm这对我不起作用,但没有错误,只是没有返回值。编辑此选项仅适用于xpage,但不适用于自定义控件。@OliverBusse:这在xpage和自定义控件中也适用于我。@OliverBusse:用第二个示例更新了答案。嗯,这不适用于我,但没有错误,只是没有返回值。编辑此选项仅适用于xpage,但不适用于自定义控件。@OliverBusse:这在xpage和自定义控件中也适用于我。@OliverBusse:用第二个示例更新了答案。编辑此选项仅适用于xpage,但不适用于自定义控件。@OliverBusse:这太奇怪了!这在我的情况下有效。我把
xp:repeat
放在我的自定义控件中,它成功了。我在本地使用8.5.3FP1。您使用的是哪个版本?我使用的是8.5.3FP3,客户端和服务器。编辑此选项仅适用于xpage,但不适用于自定义控件。@OliverBusse:这太奇怪了!这在我的情况下有效。我把
xp:repeat
放在我的自定义控件中,它成功了。我在本地使用8.5.3FP1。你用的是哪个版本?我用的是8.5.3FP3,客户端和服务器。你说“不在自定义控件中工作”是什么意思?访问道具