Xpages 当自定义控件有多个实例时,从该自定义控件获取字段值

Xpages 当自定义控件有多个实例时,从该自定义控件获取字段值,xpages,Xpages,我有一个xPage,其中包含同一自定义控件的多个实例。如何从xPage上的按钮获取特定自定义控件上的字段值 通常我会这样做: ctlName=“radioGroupCMBUAction”; var changeType=getComponent(ctlName).getValue() 如果控件只有一个实例。如何处理控件的多个实例?如果没有代码,我不确定.getValue()是否会像这样工作。为了实现这一点,它必须拉出一个字段,作为自定义控件,该字段可以在其中重复,等等 假设它可以工作,如果每个c

我有一个xPage,其中包含同一自定义控件的多个实例。如何从xPage上的按钮获取特定自定义控件上的字段值

通常我会这样做:

ctlName=“radioGroupCMBUAction”; var changeType=getComponent(ctlName).getValue()


如果控件只有一个实例。如何处理控件的多个实例?

如果没有代码,我不确定.getValue()是否会像这样工作。为了实现这一点,它必须拉出一个字段,作为自定义控件,该字段可以在其中重复,等等

假设它可以工作,如果每个customControl实例都有一个彼此唯一的id,那么它应该可以正常工作,因为每个实例内部都应该有自己的vriable

但是,其他想法可能是传入一个字符串,并使用该字符串作为自定义控件内的作用域变量的名称,该变量可以从任何位置拉出。我以前做过,在自定义控件上为字符串创建了一个属性,并在自定义控件内部使用

viewScope[compositeData.customProperty] = value.
然后在自定义控件的上下文之外,我知道传入的字符串,以便能够将该值提取出来。传入它意味着多个实例不会相互重写


或者,您可以将自定义控件中的字段写入文档,以将其取出或作为保存问题的最终解决方案。

不确定这是否有助于您。。?不久前,我写了一篇关于“私有”作用域变量的提示:


如何为每个控件指定唯一的Id?可以计算出身份证和身份证吗?我注意到该控件似乎有一个id,其cc名称与其关联。示例MyCC1:MyField1。我试着在getComponent中使用它,但它不起作用。我真的很想访问字段本身,因为如果我让它工作,我希望在验证失败时能够访问字段。如果您定义控件的ID,它将始终转换为xpages环境生成的唯一ID。(类似于view:controlid:fieldid)是的,正如jjtbsomhorst所说,您不必创建完整的唯一id。只需在控件上添加一个id属性,XPages就会添加其余的属性。然后这将变成类似于view:panel_34:control:sample的东西,您可以通过调用getComponent(“sample”)来获取它;如果您需要与字段交互,我的第一个想法是,可能更多的代码应该在自定义控件内部,否则我将使用作用域变量执行我提到的操作,并使其保存字段的id,以便您可以执行getComponent(viewScope[“control1”])或者,如果给自定义控件内的每个控件一个id,您可能会通过获取自定义控件id并添加到其中来计算出字段的id,例如customControlId+“mainDiv:secondDiv:quanityField”等。这可能会非常混乱,但通常自定义控件在有自包含的情况下是最好的,试着把验证放在里面,以及你需要做的任何其他事情,这样它就可以被放到一个页面上,指向DominoDoc字段或类似的东西,这将非常容易。是的,谢谢,我意识到我可以使用范围变量。我想做的是访问控件本身,这样我就可以设置焦点(如果我可以设置的话)。Bruce,你能添加一些示例代码,这样我们就可以看到你是如何将ID分配给各个自定义控件的吗?Per,这是我的问题。能够为每个控件分配一个唯一的id。这里的人帮助我进行绑定。但我宁愿不动态创建一个ID。我不敢相信这是这么难做到的。您可能认为我可以引用自定义控件id来访问各个控件。