我可以在xpages中获取xsp文档的所有组件吗?

我可以在xpages中获取xsp文档的所有组件吗?,xpages,lotus-notes,lotus-domino,xsp,Xpages,Lotus Notes,Lotus Domino,Xsp,我有一个包含3个字段和1个富文本字段的简单文档。我还有一个带有3个简单编辑框控件和1个富文本的xpage。我的notesxpdocument的名称是document1 问题1: 我可以得到一个包含xsp文档所有控件的向量吗?例如,不使用getComponent(“fld1”),getComponent(“fld2”)。。。等等,我可以使用类似于getAllComponents()或document1.getControls()?当然,这些方法并不存在,所以我想问是否有办法做到这一点。我知道我可以

我有一个包含3个字段和1个富文本字段的简单文档。我还有一个带有3个简单编辑框控件和1个富文本的xpage。我的notesxpdocument的名称是document1

问题1: 我可以得到一个包含xsp文档所有控件的向量吗?例如,不使用
getComponent(“fld1”)
getComponent(“fld2”)
。。。等等,我可以使用类似于
getAllComponents()
document1.getControls()
?当然,这些方法并不存在,所以我想问是否有办法做到这一点。我知道我可以通过调用
document1.getDocument().getItems()
来获取文档的所有项目(而不是XSP)。xsp有类似的功能吗

问题2:
假设我们可以得到一个向量,如上所述。然后,如果我遍历这个向量来获取每个控件的值,是否有一种方法来检查它是富文本还是简单文本字段?

有点复杂,但是是的
facesContext.getViewRoot()是一个UIViewRoot对象,因此它具有返回其子对象的
List getChildren()
方法

但是,由于它是一个树结构,它的一些子级将有额外的子级组件。您必须遍历整个树才能生成要查看的组件列表


对于类型,您可以通过组件的类来决定组件的类型。例如,UIInput是一个文本框,等等。

有点复杂,但是是的
facesContext.getViewRoot()是一个UIViewRoot对象,因此它具有返回其子对象的
List getChildren()
方法

但是,由于它是一个树结构,它的一些子级将有额外的子级组件。您必须遍历整个树才能生成要查看的组件列表


对于类型,您可以通过组件的类来决定组件的类型。例如,UIInput是一个文本框,等等。

从技术上讲,是的,但并不容易,在这种情况下,可能有更好的方法来解决您想要解决的潜在问题

尽管如此,如果您希望在页面上获得输入列表,XspQuery是您的朋友:。这样,您就可以使用“locateInputs”获取页面上所有输入的列表,然后检查它们的值方法绑定,查看字符串版本是否引用了您的变量名。容易出错,也不漂亮,但它可以工作。因为它们是属性绑定,所以我认为其中的startsWith过滤器不会满足您的需要

或者,您可以从一开始就将组件绑定到Java类中的某些内容。我最近一直在做这样一件事(为了另一个目的),最初在这里描述:。结果是,如果您能够正确地处理binding=“”属性,您可以获得引用给定对象属性的所有组件的列表


至于问题的第二部分,如果您确实以某种方式获得了组件的句柄,您可以通过执行“component instanceof com.ibm.xsp.UIInputRichText”来检查它是否是富文本控件,但并不容易,这是一种情况,在这种情况下,可能有更好的方法来解决您想要解决的潜在问题

尽管如此,如果您希望在页面上获得输入列表,XspQuery是您的朋友:。这样,您就可以使用“locateInputs”获取页面上所有输入的列表,然后检查它们的值方法绑定,查看字符串版本是否引用了您的变量名。容易出错,也不漂亮,但它可以工作。因为它们是属性绑定,所以我认为其中的startsWith过滤器不会满足您的需要

或者,您可以从一开始就将组件绑定到Java类中的某些内容。我最近一直在做这样一件事(为了另一个目的),最初在这里描述:。结果是,如果您能够正确地处理binding=“”属性,您可以获得引用给定对象属性的所有组件的列表


至于问题的第二部分,如果您确实以某种方式获得了组件的句柄,您可以通过执行“component instanceof com.ibm.xsp.UIInputRichText”来检查它是否是一个富文本控件。

我只是想知道为什么要在Xpage上获取所有组件?这方面的需求/用例是什么?我可以看到在文档中很少需要getItems,但我不明白为什么您需要在Xpage上使用所有组件。我创建了一个类似于gmail“自动另存为草稿”的模块。因此,当我打开文档进行编辑时,我会定期检查字段中是否有任何更改。我通过一个接一个地获取字段来实现它,但我想让它更抽象和可重用。您最好在客户端检查字段差异,然后触发服务器端保存,特别是因为您希望“定期”轮询更改。是的,也许我最终会访问客户端,但。。。我也很好奇!:)为了使其可重用,您可以将一个类分配给所有需要检查的字段。我只是想知道为什么要在Xpage上获取所有组件?这方面的需求/用例是什么?我可以看到在文档中很少需要getItems,但我不明白为什么您需要在Xpage上使用所有组件。我创建了一个类似于gmail“自动另存为草稿”的模块。因此,当我打开文档进行编辑时,我会定期检查字段中是否有任何更改。我通过一个接一个地获取字段来实现它,但我想让它更抽象和可重用。您最好在客户端检查字段差异,然后触发服务器端保存,特别是因为您希望“定期”轮询更改。是的,也许我最终会访问客户端,但。。。我也很好奇!:)为了使其可重用,您可以将一个类分配给所有需要检查的字段。