2011-11-17 17 views
5

¿Hay alguna manera de establecer un parámetro de bean administrado en un componente compuesto y luego dejar las clases que usan para decidir qué bean administrado real usar?Establecer Bean administrado como parámetro en Componente compuesto

algo en la línea de: 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> 

Y luego, en el uso de la página

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

    </ezcomp:comp> 

En mi caso ActualBean es un subtipo de SuperBean.

Ni siquiera estoy seguro de que esto sea posible, pero digamos que sería genial si alguien me probara mal.

gracias de antemano

+0

Esto no tiene sentido. ¿Cuál es exactamente el requisito funcional? ¿Restringir el tipo de bean gestionado a un cierto tipo? – BalusC

+2

Para eliminar el código duplicado, básicamente. Tengo muchos atributos que deben establecerse en el componente compuesto. Lo único que difiere en las páginas de uso es el nombre de los beans administrados, todos ellos subtipos de un superbean. No es esencial, solo me preguntaba si es posible. – glasspill

Respuesta

10

Para eliminar código duplicado, básicamente. Tengo muchos atributos que deben establecerse en el componente compuesto. Lo único que difiere en las páginas de uso es el nombre de los beans administrados, todos ellos subtipos de un superbean.

No es necesario que especifique todos los atributos. Solo especificar solo el frijol es suficiente. Podría hacer referencia directamente a sus propiedades en el componente compuesto.

<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}" /> 
Cuestiones relacionadas