Установить управляемый компонент в качестве параметра в составном компоненте - PullRequest
5 голосов
/ 17 ноября 2011

Есть ли способ установить параметр управляемого компонента в составном компоненте и затем оставить классы использования, чтобы решить, какой фактический управляемый компонент использовать?

что-то вроде: comp.xhtml

       <cc:interface>
            <cc:attribute name="price" />
            <cc:param name="pageBean" value="#{superBean}" />       
       <cc:interface>
       <cc:implementation>
                <h:outputText value="#{cc.attrs.price}"/>
       </cc:implementation>

А потом, на странице использования

   <ezcomp:comp pageBean="actualBean"
                          price="#{actualBean.price}" >

    </ezcomp:comp> 

В моем случае ActualBean является подтипом SuperBean.

Я даже не уверен, что это возможно, но давайте просто скажем, что было бы замечательно, если бы кто-то доказал мою неправоту.

Заранее спасибо

1 Ответ

11 голосов
/ 19 ноября 2011

Для удаления дубликата кода, в основном. У меня есть много атрибутов, которые должны быть установлены в составном компоненте. Единственное, что отличается в использовании страниц - это имя управляемых bean-компонентов, все они являются подтипами супер-бобов.

Вам не нужно указывать все атрибуты. Достаточно указать только один боб. Вы можете напрямую ссылаться на его свойства в составном компоненте.

<cc:interface>
    <cc:attribute name="pageBean" type="com.example.SuperBean" required="true" />       
<cc:interface>
<cc:implementation>
    <h:outputText value="#{cc.attrs.pageBean.price}"/>
</cc:implementation>

с

<ezcomp:comp pageBean="#{actualBean}" />
...