JSF自定义标记包装器动态参数

时间:2012-04-24 09:53:44

标签: jsf richfaces custom-tag

我正在尝试创建一个自定义标记,它将作为标准组件的包装,并将为某些常用属性定义值

例如,自定义标记看起来像这样

<ui:component xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jstl/core">

   <rich:datascroller fastControls="false" fastStep="false" maxPages="20" id="#{value}"/>

</ui:component>

然后每次我需要像

这样的数据循环器组件时,我都可以使用这个标签
<my:dataTable id="componentId"/>

我的问题是我是否可以为我的自定义标签提供将“转移”到jsf组件的属性,而不明确指定每个属性。例如,考虑以下使用我的自定义组件

<my:dataTable id="componentId" pagesVar="books" stepControls="true"/>

和这一个

<my:dataTable id="componentId" pagesVar="items" renderIfSinglePage="false"/>

属性pagesVar,stepControls,renderIfSinglePage应该传递给rich:datascroller组件。我知道我可以做这样的事情

<rich:datascroller pagesVar=#{pagesVar ? pagesVar : ''} stepControls=#{stepControls ? true: false}/>

但我想知道是否有办法传递所有属性而不指定其中的每一个

1 个答案:

答案 0 :(得分:1)

  

但我想知道是否有办法传递所有属性而不指定其中的每一个

不,标记属性不支持任何形式的继承。

然而,您可以更多地简化您的特定示例。

<rich:datascroller pagesVar="#{pagesVar}" stepControls="#{stepControls}" />