Xpages在extlib对话框中获取组件值

Xpages在extlib对话框中获取组件值,xpages,xpages-ssjs,xpages-extlib,Xpages,Xpages Ssjs,Xpages Extlib,我在extlib对话框的面板中定义了一个文档数据源(称为document1)。在此面板中,它包含对话框内容和对话框按钮栏。在对话框内容中,中包含一个自定义控件,该控件包含所有组件,如dojo编辑框、列表框、单选按钮等等。在对话框按钮栏中,它包含一个保存按钮。保存时,我无法通过以下getComponent document.getDocument.getxxx从任何组件获取值: print (getComponent.getValue("control")); print (document1

我在extlib对话框的面板中定义了一个文档数据源(称为document1)。在此面板中,它包含对话框内容和对话框按钮栏。在对话框内容中,中包含一个自定义控件,该控件包含所有组件,如dojo编辑框、列表框、单选按钮等等。在对话框按钮栏中,它包含一个保存按钮。保存时,我无法通过以下getComponent document.getDocument.getxxx从任何组件获取值:

 print (getComponent.getValue("control"));
 print (document1.getDocument(true).getValueInString("control"));
 print (document1.getValue("control"));
有趣的是知道document1.sertValue(“control”,newvalue)和document1.getDocument(true).isNewNote()都在工作

对话框将从“重复”对话框中的“视图”列打开。所有数据都会正确显示在对话框中。我可以保存修改后的数据,检索并显示它们,没有任何问题。唯一一件事是我无法得到它们的值进行处理

保存事件处理程序是完全更新,并为面板设置部分执行模式

面板为忽略其参数并将作用域设置为请求,但没有运气


非常感谢你的帮助。提前感谢。

有很多事情需要考虑和/或检查:

  • 确保你真正掌握了控制权。由于它位于自定义控件中,因此可以轻松地拥有多个控件。在这种情况下,您要么需要自己的函数
    getComponentChild(parentName,controlName),要么(IMHO更好)从customControl的compositeData(这是一个映射)中读取它
  • 绑定控件时,与其使用
    getValue()
    ,不如遵循其绑定。因此,当您绑定到
    document.subject
    时,查找该值(或者
    viewScope.someValue
    ,如果您将其绑定到viewScope)
  • 如果提交过程中验证失败,或者您在早期阶段进行查询,则不能使用
    getValue()
    ,但需要使用getSubmittedValue()
    ,因为它包含验证发生之前的原始值

让我们知道它是如何运行的:

有很多事情需要考虑和/或检查:

  • 确保你真正掌握了控制权。由于它位于自定义控件中,因此可以轻松地拥有多个控件。在这种情况下,您要么需要自己的函数
    getComponentChild(parentName,controlName),要么(IMHO更好)从customControl的compositeData(这是一个映射)中读取它
  • 绑定控件时,与其使用
    getValue()
    ,不如遵循其绑定。因此,当您绑定到
    document.subject
    时,查找该值(或者
    viewScope.someValue
    ,如果您将其绑定到viewScope)
  • 如果提交过程中验证失败,或者您在早期阶段进行查询,则不能使用
    getValue()
    ,但需要使用getSubmittedValue()
    ,因为它包含验证发生之前的原始值

让我们知道它是如何运行的

实际上document1.getDocument().getXXX(“项目名称”)和document1.getValue(“项目名称”)它们的参数应该是项目名称,而不是contorl id!!!它们是可行的:-)。然而,getComponent.getValue(“control”)。不应该“print”(getComponent.getValue(“control”));“be”应该“print”(getComponent(“control”).getValue();”而不是“print”(getComponent(“control”).getValue();“啊,你说得对,Frantisek。这是getComponent(“control”).getValue():-)对不起,我弄错了。我确实做了getComponent('controlId').getValue()并重试,但仍然没有成功。不知道这是因为extlib对话框中的控件。我刚刚发现getComponent('controlId').getValue()不适用于extlib控件,实际上是document1.getDocument().getXXX('item name')和document1.getValue(“item name of the item”),它们的参数应该是item的名称,而不是contorl id!!!它们是可行的:-)。然而,getComponent.getValue(“control”)。不应该“print”(getComponent.getValue(“control”));“be”应该“print”(getComponent(“control”).getValue();”而不是“print”(getComponent(“control”).getValue();“啊,你说得对,Frantisek。这是getComponent(“control”).getValue():-)对不起,我弄错了。我确实做了getComponent('controlId').getValue()并重试,但仍然没有成功。不知道这是因为extlib对话框中的控件。我刚刚发现getComponent('controlId')。getValue()不适用于extlib控件,也就是说