0

我已经阅读了 Naveen Maurya、Keith Strickland 和 Martin Rolph 关于创建自定义渲染器的有趣文章,并且想知道是否可以对自定义控件和 XPage 进行同样的操作。

我发现自定义控件的渲染器类用于自定义控件com.ibm.xsp.Includecom.ibm.xsp.ViewRootExXPage,但 Eclipse 找不到这些类。

如果可能的话,我想做的是修改生成的 html,就像 Martin Rolph 和 Keith Strickland 在他们的示例中所做的那样,但是在自定义控件和/或 xPage 级别上进行一次更改,而不是针对每个自定义控件进行更改。

4

1 回答 1

4

com.ibm.xsp.Include并且com.ibm.xsp.ViewRootEx分别是自定义控件和 XPage 的渲染器类型。渲染器类型不是Java 类(尽管从命名约定来看它可能看起来像一个)。渲染器的 Java 类在<renderer-class>标记中定义,如下例所示。

<render-kit>
  <renderer>
    <component-family>javax.faces.SelectOne</component-family>
    <renderer-type>uk.co.pipalia.type.ReadOnlyRenderer</renderer-type>
    <renderer-class>uk.co.pipalia.ReadOnlyRenderer</renderer-class>
  </renderer>
</render-kit>

要获取任何控件的关联渲染器 Java 类的名称,您可以使用以下代码:

getComponent("controlName").getRenderer(facesContext).getRenderer().getClass().getName();

对于 XPage,渲染器类是com.ibm.xsp.renderkit.html_basic.ViewRootRendererEx2,自定义控件,渲染器类是com.ibm.xsp.renderkit.html_basic.IncludeRenderer.

您现在可以像 Martin 和 Keith 一样使用扩展这些类来生成您自己的自定义 HTML。

于 2013-08-29T10:18:16.093 回答