Xpages 从页面级别获取属性/参数
我想知道是否可以通过编程方式获取xpage或自定义控件的参数和/或属性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
<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,客户端和服务器。你说“不在自定义控件中工作”是什么意思?访问道具