2011-11-17 9 views
5

Czy istnieje sposób ustawiania zarządzanego parametru komponentu bean w komponencie złożonym, a następnie opuszczenie klas używania w celu określenia, którego rzeczywistego zarządzanego komponentu bean użyć?Ustawienie komponentu bean zarządzanej jako parametru w komponencie złożonym

coś wzdłuż linii: 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> 

A potem, w wykorzystaniem stronie

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

    </ezcomp:comp> 

W moim przypadku ActualBean jest podtypem SuperBean.

Nie jestem nawet pewien, czy to możliwe, ale powiedzmy, że byłoby wspaniale, gdyby ktoś mi udowodnił, że się mylę.

góry dziękuję

+0

To nie ma sensu. Czym dokładnie jest wymaganie funkcjonalne? Ograniczanie zarządzanego typu komponentu bean do określonego typu? – BalusC

+2

Aby usunąć zduplikowany kod, w zasadzie. Mam wiele atrybutów, które należy ustawić w komponencie złożonym. Jedyną różnicą w używaniu stron jest nazwa zarządzanej fasoli, która jest podtypem superbean. To nie jest istotne, zastanawiałem się tylko, czy to możliwe. – glasspill

Odpowiedz

10

do usuwania zduplikowanych kodu, w zasadzie. Mam wiele atrybutów, które należy ustawić w komponencie złożonym. Jedyną różnicą w używaniu stron jest nazwa zarządzanej fasoli, która jest podtypem superbean.

Nie trzeba podawać wszystkich atrybutów. Samo podanie samej fasoli jest wystarczające. Można bezpośrednio odwoływać się do jego właściwości w komponencie złożonym.

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

z

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