Xpages 当属性位于组中时,为复合数据设置值
我的自定义控件中有一个自定义属性。自定义属性位于Field1组中,称为ClientID。组和字段位于自定义特性定义中。我想将其设置为页面加载。因此,我做了以下工作:Xpages 当属性位于组中时,为复合数据设置值,xpages,Xpages,我的自定义控件中有一个自定义属性。自定义属性位于Field1组中,称为ClientID。组和字段位于自定义特性定义中。我想将其设置为页面加载。因此,我做了以下工作: compositeData.Field1.ClientID = getClientId("Field1") compositeData.Field1_ClientID = getClientId("Field1") 当我这样做时,我会得到一个错误: “compositeData.Field1”为空 但是如果我在根上定义一个名为F
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);我之前评论中的代码是我在机器上所做测试的直接副本。它确实有效。