2

我正在尝试创建一个自定义标签,该标签将充当标准组件的包装器,并将定义一些常见属性的值

例如,自定义标签将如下所示

<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>

然后,每次我需要一个 datascroller 组件时,我都可以使用这个标签

<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}/>

但我想知道是否有一种方法可以传递所有属性而不指定每个属性

4

1 回答 1

1

但我想知道是否有一种方法可以传递所有属性而不指定每个属性

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

但是,您可以进一步简化您的特定示例。

<rich:datascroller pagesVar="#{pagesVar}" stepControls="#{stepControls}" />
于 2012-04-24T12:35:08.460 回答