有没有办法在复合组件中设置托管bean参数,然后让使用类来决定使用哪个实际托管bean?
类似于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的子类型。
我甚至不确定这是可能的,但我们只是说如果有人证明我错了会很棒。
提前谢谢
答案 0 :(得分:11)
基本上要删除重复的代码。我有很多需要在复合组件中设置的属性。使用页面唯一不同的是托管bean的名称,都是超大豆的子类型。
您无需指定所有属性。只是单独指定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}" />