我已经阅读了有关从Naveen Maurya,Keith Strickland和Martin Rolph创建自定义渲染器的有趣文章,并且想知道是否可以对自定义控件和XPage执行相同的操作。
我发现自定义控件的渲染器类com.ibm.xsp.Include
用于自定义控件,而com.ibm.xsp.ViewRootEx
用于XPage,但Eclipse找不到这些类。
如果可能,我想做的是修改生成的html,就像Martin Rolph和Keith Strickland在他们的示例中所做的那样,但是在自定义控件和/或xPage级别进行一次更改而不是每个自定义控件
答案 0 :(得分:4)
com.ibm.xsp.Include
和com.ibm.xsp.ViewRootEx
分别是自定义控件和XPage的渲染器类型。渲染器类型不是一个Java类(尽管从命名约定看它可能看起来像一个)。 Renderer的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。