Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpages 当属性位于组中时,为复合数据设置值_Xpages - Fatal编程技术网

Xpages 当属性位于组中时,为复合数据设置值

Xpages 当属性位于组中时,为复合数据设置值,xpages,Xpages,我的自定义控件中有一个自定义属性。自定义属性位于Field1组中,称为ClientID。组和字段位于自定义特性定义中。我想将其设置为页面加载。因此,我做了以下工作: compositeData.Field1.ClientID = getClientId("Field1") compositeData.Field1_ClientID = getClientId("Field1") 当我这样做时,我会得到一个错误: “compositeData.Field1”为空 但是如果我在根上定义一个名为F

我的自定义控件中有一个自定义属性。自定义属性位于Field1组中,称为ClientID。组和字段位于自定义特性定义中。我想将其设置为页面加载。因此,我做了以下工作:

compositeData.Field1.ClientID = getClientId("Field1")
compositeData.Field1_ClientID = getClientId("Field1")
当我这样做时,我会得到一个错误:

“compositeData.Field1”为空

但是如果我在根上定义一个名为Field1\u ClientID的属性,并执行以下操作:

compositeData.Field1.ClientID = getClientId("Field1")
compositeData.Field1_ClientID = getClientId("Field1")
那么一切都很好。如何使用自定义属性中的组?

要在组“group1”中设置属性“property1”,可以执行以下操作:

compositeData.Field1.ClientID = getClientId("Field1")
compositeData.Field1_ClientID = getClientId("Field1")
compositeData.group1.property1=“测试”

您可以在自定义控件的beforePageLoad或afterPageLoad事件中运行上述代码

我认为您的问题在于,您正在设置自定义控件设置之前发生的事件中的值。

Bruce

compositeData是一个属性映射。如果其中没有值,compositeData.Field1将为null(因为它也是一个属性映射)

所以你可以这样做

compositeData.Field1= { ClientID: getClientId("Field1") }

好的,我对自定义控件的组功能进行了快速测试(以前从未使用过)

给定一组“testGroup”和该组内的“testProp”属性

在加载前页面中已执行以下操作:

compositeData.testProp = "example1";
print("Test1: " + compositeData.testProp);
以下情况不起作用:

compositeData.testGroup.testProp = "example2";
print("Test2: " + compositeData.testGroup.testProp);

因此,我认为group属性可能只是一种逻辑分组属性的方式,而不是定义具有多个属性的对象。尝试仅引用属性而不是组。

他希望将其设置为页面加载。我已使用beforePageLoad和afterPageLoad事件更新了我的答案。感谢您的回复。我在页面加载之前和之后都试过了,结果都是相同的错误。请再读一遍我的帖子。该错误与我将其设置为的控件无关。这是该集团的问题。我得到的错误是“compositeData.Field1”为空。如果我把它移到字段的onChange事件中,我甚至会得到它。我发现,如果将CC插入Xpage,然后设置Field1.ClientID的值,则不会出现错误。如果我的属性只是名为Field1\u ClientID,并且我不必设置值,那么我也不会得到错误。您所说的“尝试只引用属性而不引用组”是什么意思?如果能够对这些属性进行分组,那就太好了。正如我的代码示例所示,如果它在一个组中,您仍然可以使用compositeData.value而不是compositeData.group.value来获取该值。您仍然可以对它们进行分组,但在引用它们时,请通过compositeData.value调用它们。我想我现在明白了。我可以创建属性作为组的一部分,但仍然可以通过忽略组名来设置它们?那对我不起作用。我想做的是像Field1.Value,Field1.ID,Field2.Value,Field2.ID这样的东西。好的,那么为什么不在字段中放置一个js对象呢。因此,创建属性,如field1、field2(不在组中)。并使用类似compositeData.field1={id:“testId”,value:“testVal”};我给了它一个快速测试,它可以工作,例如打印(“值:”+compositeData.field1.Value);我之前评论中的代码是我在机器上所做测试的直接副本。它确实有效。