0

我正在为 Xpages 开发一个库控件,在创建时需要一些帮助。

我将创建一个控件,它读取配置文件并在表格中创建控件,如编辑框、复选框组等控件。

所以现在我的问题:

我可以从 Exlib 启动控件还是必须自己实现它们?

如果我可以从 Exlib 中使用它们,谁能解释我怎么做?

我希望它清楚我的意思,如果不是,请向我询问更多信息。

4

1 回答 1

2

在创建自己的组件时,如果您要密切复制扩展库组件中已有的某些行为,我强烈建议您扩展该组件并添加所需的内容以适应您的不同功能。这使事情变得更加容易,并且您不必围绕可能放置组件的每个小场景进行编码。

但是,如果您正在开发一个与任何扩展库或核心组件完全不同的组件,那么只需确保您的组件扩展了 UIComponent 或 UIComponentBase。如果走这条路,您还需要创建自己的渲染器来扩展渲染器。这将构建组件的屏幕表示。同样,如果核心组件或扩展库组件中已经有一些东西可以密切模仿您的需求,那么让您的渲染器扩展该渲染器。另外,不要忘记在 faces-config 文件中包含渲染器定义,在 xsp-config 文件中包含组件定义,否则您的组件将无法工作。

至于从 extlib 启动控件......我假设你的意思是你可以在运行时将它们注入页面。如果是这样,答案是肯定的。将输入文本字段添加到存在 ID 为“someContainer”的容器(即面板、div、span 等)的页面

XspInputText input = new XspInputText();
input.setValue("someValue");
input.setId("someID");
UIComponent container =  FacesContext.getCurrentInstance().getViewRoot().findComponent("someContainer");
container.getChildren().add(input);

要查看所有核心和扩展库组件的 api,请查看XPages 控件文档。有关创建自己的组件的更完整教程,请查看我的博客,以在 nsf 中创建自定义组件,将它们放入库的步骤几乎相同: 第 1部分, 第 2 部分,还有一个示例数据库在第 2 部分的帖子中。

于 2012-07-03T20:44:41.117 回答