让我们考虑扩展现有的JSF组件,例如
<rich:datatable/>
. 我的主要要求是动态修改
<f:facet>
,以更改其内容。
实现这一目标的最佳方法是什么?或
哪里
代码中是否有实现这一点的最佳位置?
在我的
faces-config.xml
,我有以下声明:
<faces-config>
...
<component>
<component-type>my.component.dataTable</component-type>
<component-class>my.project.component.table.MyHtmlDataTable</component-class>
</component>
...
<render-kit>
<render-kit-id>HTML_BASIC</render-kit-id>
<renderer>
<component-family>org.richfaces.DataTable</component-family>
<renderer-type>my.renderkit.dataTable</renderer-type>
<renderer-class>my.project.component.table.MyDataTableRenderer</renderer-class>
</renderer>
...
还有,我的
my-project.taglib.xml
文件(我使用facelets)如下:
<facelet-taglib>
<namespace>http://my.project/jsf</namespace>
<tag>
<tag-name>dataTable</tag-name>
<component>
<component-type>my.component.dataTable</component-type>
<renderer-type>my.renderkit.dataTable</renderer-type>
</component>
</tag>
如您所见,我的项目中有两个类用于定制数据表:
MyHtmlDataTable
和
MyDataTableRenderer
.
我的一个想法是修改
<F:刻面& GT;
直接在
doEncodeBegin()
渲染器的方法。这是有效的(事实上
almost working
但是我不认为那是更好的地方来实现我的修改。
你怎么认为?
技术信息:JSF 1.2、FACELET、Riffs3.3.2、Java 1.6