2012-04-24 82 views
2

我试图创建一个自定义标签,将作为一个包装标准组件,并定义了一些常用的属性值JSF自定义标签的包装的动态参数

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

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

我的问题datascroller组件时使用这个标签是我是否能提供我的自定义标签与ATTRIB它将被“转移”到jsf组件,而不用明确指定每个组件。例如,考虑以下使用我的自定义组件

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

的这一个

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

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

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

,但我不知道是否有通过所有属性,而无需指定他们

回答

1

中的每一个方式,但我想知道如果有一种方法以通过所有属性而不指定它们中的每一个

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

但是,您可以更多地简化您的特定示例。

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