我有一个带有h:selectOneMenu的页面和一个数据表。我想根据我在h:selectOneMenu中选择的内容加载/渲染/启用我的h:datatable。这可能吗?
这是一些代码
<tr class="portlet-table-body" >
<td width="20%" class="porlet-padding-left"><h:outputText value="${operatorProgramBundle.NextGenerationWorkflow}" /></td>
<td width="450px">
<h:selectOneMenu id="ngw" styleClass="portlet-dropdown" value="${CRUDOperatorProgram.selectedNextGenWorkflow}">
<f:selectItems value="${CRUDOperatorProgram.nextGenWorkflowList}" />
</h:selectOneMenu>
</td>
<h:dataTable id="DispatchConfigurationCustom" columnClasses="portlet-table-same portlet-table-cell"
headerClass="portlet-table-same portlet-table-cell" value="#{CRUDOperatorProgram.workflowConfigList}" var="workflowConfig" width="100%" >
<h:column>
<f:facet name="header">
<h:outputText value="Include" />
</f:facet>
<h:selectBooleanCheckbox id="includeInd" value="#{workflowConfig.isIncludedInd}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Automate" />
</f:facet>
<h:selectOneRadio id="onOff" value="#{workflowConfig.isAutomatedInd}">
<f:selectItem id="onButton" itemLabel="On" itemValue="0" />
<f:selectItem id="offButton" itemLabel="Off" itemValue="0" />
</h:selectOneRadio>
</h:column>
</h:dataTable>
答案 0 :(得分:2)
鉴于您正在使用JSF 2.x,只需在下拉列表中使用<f:ajax>
来更新数据表的最近父级,并让数据表的rendered
属性评估true
或false
因此取决于所选项目。
假设您只想在选择项目值“foo”时显示数据表,请执行以下操作:
<h:selectOneMenu value="#{bean.selectedItem}">
<f:selectItems value="#{bean.availableItems}" />
<f:ajax render="table" />
</h:selectOneMenu>
<h:panelGroup id="table">
<h:dataTable rendered="#{bean.selectedItem == 'foo'}">
...
</h:dataTable>
</h:panelGroup>