JSF通过在另一个页面中包含一个额外的列来扩展基础数据表

时间:2010-02-09 11:14:26

标签: jsf

我有一个包含20列的基本数据表,供所有报告使用...有些报告添加了其他列,有没有办法将额外列的代码放在单独的JSF页面中并引用一些如何?

e.g。

datatable.jsp

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<h:dataTable value="#{table}" var="item" styleClass="report-table">
    <f:subview id="tb1">
        <jsp:include page="/jsp/include.jsp" />
    </f:subview>
</h:dataTable>


include.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>


<t:column >
        <f:facet name="header">
                <h:outputText value="User" />
        </f:facet>
        <h:outputText value="MyUser"></h:outputText>
</t:column>

1 个答案:

答案 0 :(得分:1)

不,不可能。您最好的选择是rendered组件的h:column属性。如果评估为true,则会显示相关列。 E.g:

<h:dataTable value="#{bean.list}" var="item">
    <h:column>
        This is always displayed.
    </h:column>
    <h:column rendered="#{bean.additionalColumnRequired}">
        This is only displayed when additionalColumnRequired == true.
    </h:column>
    <h:column rendered="#{!bean.additionalColumnRequired}">
        This is only displayed when additionalColumnRequired == false.
    </h:column>
</h:dataTable>

..布尔getter看起来像这样:

public boolean isAdditionalColumnRequired() {
    return ... // true or false.
}

但是,您可以在rendered属性中添加任何类型的布尔表达式。

<h:someComponent rendered="#{bean.booleanValue}" />
<h:someComponent rendered="#{bean.intValue > 10}" />
<h:someComponent rendered="#{bean.objectValue == null}" />
<h:someComponent rendered="#{bean.stringValue != 'someValue'}" />
<h:someComponent rendered="#{!empty bean.collectionValue}" />
<h:someComponent rendered="#{!bean.booleanValue && bean.intValue != 0}" />
<h:someComponent rendered="#{bean.stringValue == 'oneValue' || bean.stringValue == 'anotherValue'}" />