2012-04-24 2 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> 

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

<my:dataTable id="componentId"/> 

моего вопрос, могу ли я предоставить свой собственный тег с 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}" />