1

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

问题1:我可以得到一个带有xsp文档所有控件的向量吗?例如,我可以使用 or 之类的东西来代替使用, getComponent("fld1")...getComponent("fld2")等吗?这些方法当然不存在,所以我问是否有办法做到这一点。我知道我可以通过调用来获取文档的所有项目(不是 XSP)。xsp有类似的吗?getAllComponents()document1.getControls()document1.getDocument().getItems()

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

4

2 回答 2

4

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

尽管如此,如果您希望获得页面上的输入列表,XspQuery 是您的朋友:http ://avatar.red-pill.mobi/tim/blog.nsf/d6plinks/TTRY-96R5ZT 。这样,您可以使用“locateInputs”来获取页面上所有输入的列表,然后检查它们的值方法绑定以查看字符串版本是否引用了您的变量名。容易出错且不漂亮,但它会起作用。由于它们是属性绑定,因此我认为其中的 startsWith 过滤器不会满足您的要求。

或者,您可以从一开始就将组件绑定到 Java 类中的某些内容。我最近一直在做这样的事情(为了不同的目的)并最初在这里描述它:https ://frostillic.us/f.nsf/posts/my-black-magic-for-the-day 。结果是,通过正确处理 binding="" 属性的方法,您可以获得引用给定对象属性的所有组件的列表。

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

于 2014-09-02T12:31:47.033 回答
3

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

然而,由于它是一个树形结构,它的一些子组件会有额外的子组件。您必须遍历整个树来构建您想要查看的组件列表。

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

于 2014-09-02T12:27:43.557 回答