我有一个包含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>
答案 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'}" />