【发布时间】:2015-03-18 08:23:59
【问题描述】:
我有两个内部带有<h:dataTable> 的复合组件,它们的不同之处仅在于几个<h:column> 的内容。 使用复合组件的可能性来逃避复制粘贴的最佳方法是什么?我知道标签,但我们的项目中没有任何标签。所以,这对我来说不是解决方案。
【问题讨论】:
我有两个内部带有<h:dataTable> 的复合组件,它们的不同之处仅在于几个<h:column> 的内容。 使用复合组件的可能性来逃避复制粘贴的最佳方法是什么?我知道标签,但我们的项目中没有任何标签。所以,这对我来说不是解决方案。
【问题讨论】:
为你的复合组件添加一个属性:
<cc:interface>
<cc:attribute name="columnType" type="java.lang.String" required="true" />
</cc:interface>
然后在实现中
<h:column rendered="#{cc.attrs.columnType eq 'typeAColumns'>
#{data.valueForColumnTypeA}
</h:column>
<h:column rendered="#{cc.attrs.columnType eq 'typeBColumns'>
#{data.valueForColumnTypeB}
</h:column>
你可以像这样使用它
<my:compositeTable columnType="typeAColumns"/>
<my:compositeTable columnType="typeBColumns"/>
【讨论】: