Динамические параметры оболочки пользовательского тега 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"/>

Мой вопрос заключается в том, могу ли я предоставить свой собственный тег с атрибутами, которые будут «перенесены» в компонент 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}/>

но мне интересно, есть ли способ передать все атрибуты без указания каждого из них


person dimcookies    schedule 24.04.2012    source источник


Ответы (1)


но мне интересно, есть ли способ передать все атрибуты без указания каждого из них

Нет, атрибуты тегов не поддерживают никаких форм наследования.

Однако вы можете еще больше упростить свой конкретный пример.

<rich:datascroller pagesVar="#{pagesVar}" stepControls="#{stepControls}" />
person BalusC    schedule 24.04.2012