將列添加到Primefaces panelGrid的我有點新的JSF和Primefaces,我想提出一個包含Primefaces GridPanel中的複合成分:使用複合組件
<composite:interface>
<composite:attribute name="bind" type="com.whatever.IBackingBean"/>
<composite:facet name="headerCols"/>
<composite:facet name="bodyCols"/>
</composite:interface>
<composite:implementation>
<h:form>
<p:panelGrid>
<p:row>
<composite:renderFacet name="headerCols"/>
<p:column>
<h:outputText value="Col1" />
</p:column>
<p:column>
<h:outputText value="Col2" />
</p:column>
<p:column>
<h:outputText value="Col3" />
</p:column>
</p:row>
<p:row>
<composite:renderFacet name="bodyCols"/>
<p:column>
<h:outputText value="#{cc.attrs.bind.prop1}" />
</p:column>
<p:column>
<h:outputText value="#{cc.attrs.bind.prop2}" />
</p:column>
<p:column>
<h:outputText value="#{cc.attrs.bind.prop3}" />
</p:column>
</p:row>
</p:panelGrid>
</h:form>
</composite:implementation>
,並希望有一個使用類似於:
<x:mycomposite bind="#{myBackingBean}">
<f:facet name="headerCols">
<p:column>
<h:outputText value="My Extra Prop"/>
</p:column>
</f:facet>
<f:facet name="bodyCols">
<p:column>
<h:outputText value="#{myBackingBean.extraProp}"/>
</p:column>
</f:facet>
</x:mycomposite>
但是,當我這樣做...方面不會被添加。我認爲這可能與無法使用<composite:renderFacet>
作爲<p:panelGrid>
的參數有關,該參數也是(可能是)組合。
因爲我需要添加列而不是行,所以我需要在多個位置添加,因此<composite:insertChildren>
不起作用。
我大概只是使用一個屬性,但如何傳遞一個元素值作爲屬性值? 由於這樣的事情似乎並不可用:
<x:mycomposite bind="#{myBackingBean}">
<f:attribute name="headerCols">
<p:column>
<h:outputText value="My Extra Prop"/>
</p:column>
</f:attribute>
<f:attribute name="bodyCols">
<p:column>
<h:outputText value="#{myBackingBean.extraProp}"/>
</p:column>
</f:attribute>
</x:mycomposite>
這個假設我修改了複合材料:
<composite:interface>
<composite:attribute name="bind" type="com.whatever.IBackingBean"/>
<composite:attribute name="headerCols"/>
<composite:attribute name="bodyCols"/>
</composite:interface>
<composite:implementation>
<h:form>
<p:panelGrid>
<p:row>
#{cc.attrs.headerCols}
<p:column>
<h:outputText value="Col1" />
</p:column>
<p:column>
<h:outputText value="Col2" />
</p:column>
<p:column>
<h:outputText value="Col3" />
</p:column>
</p:row>
<p:row>
#{cc.attrs.bodyCols}
<p:column>
<h:outputText value="#{cc.attrs.bind.prop1}" />
</p:column>
<p:column>
<h:outputText value="#{cc.attrs.bind.prop2}" />
</p:column>
<p:column>
<h:outputText value="#{cc.attrs.bind.prop3}" />
</p:column>
</p:row>
</p:panelGrid>
</h:form>
</composite:implementation>
任何人都可以提供任何替代方案或如何使使用模式的工作建議?
謝謝!