2011-11-17 15 views
5

Esiste un modo per impostare un parametro bean gestito in un componente composito e quindi lasciare le classi using per decidere quale bean gestito effettivamente utilizzare?Imposta bean gestito come parametro nel componente composito

qualcosa sulla falsariga di: 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> 

E poi, nella pagina utilizzando

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

    </ezcomp:comp> 

Nel mio caso ActualBean è un sottotipo di SuperBean.

Non sono nemmeno sicuro che sia possibile, ma diciamo che sarebbe bello se qualcuno mi dimostrasse che avevo torto.

Grazie in anticipo

+0

questo non ha senso. Qual è esattamente il requisito funzionale? Limitazione del tipo di bean gestito a un certo tipo? – BalusC

+2

Per rimuovere il codice duplicato, in pratica. ho molti attributi che devono essere impostati nel componente composito. L'unica cosa che differisce nelle pagine usando è il nome dei bean gestiti, essendo tutti sottotipi di un superbo. Non è essenziale, mi stavo chiedendo se è possibile. – glasspill

risposta

10

Per rimuovere il codice duplicato, in fondo. ho molti attributi che devono essere impostati nel componente composito. L'unica cosa che differisce nelle pagine usando è il nome dei bean gestiti, essendo tutti sottotipi di un superbo.

Non è necessario specificare tutti gli attributi. Basta specificare solo il bean è sufficiente. È possibile fare riferimento direttamente alle sue proprietà nel componente composito.

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

con

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