Jsf 如何禁用/启用h:datatable

Jsf 如何禁用/启用h:datatable,jsf,datatable,Jsf,Datatable,我有一个带有h:SelectOne菜单和数据表的页面。我想根据在h:SelectOne菜单中选择的内容加载/渲染/启用我的h:datatable。这可能吗 这里有一些代码 <tr class="portlet-table-body" > <td width="20%" class="porlet-padding-left"><h:outputText value="${operatorProgramBundle.NextGenerationWorkflow}" /&

我有一个带有h:SelectOne菜单和数据表的页面。我想根据在h:SelectOne菜单中选择的内容加载/渲染/启用我的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>


如果您使用的是JSF 2.x,只需在下拉列表中使用
来更新数据表最接近的父项,并根据所选项目相应地计算数据表的
呈现的
属性
true
false

假设您希望仅在选择项值“foo”时显示datatable,请执行以下操作:

<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>

...

是的,在JSF2中可以使用
内的
标记。如果您使用的是JSF 1.2,您将需要一个第三方库来处理像RichFaces 3这样的ajax交互。@LuiggiMendoza是否可以不禁用datatable,然后当从h:SelectOne菜单中选择特定的内容时,datatable将启用?你介意给我举个例子吗?“Enable/disable”是HTML
元素(由
组件生成)上下文中的一个奇怪术语。你不是说“展示/隐藏”吗?此外,您使用的是JSF1.x还是2.x?您放置代码的方式(这在语法上对于JSP上的JSF1.x是有效的)和单词“portlet”闻起来很像一个遗留的JSF1.xportlet.ok。您使用的是JSF1.x还是2.x?在任何人发布答案之前,了解这一点非常重要。由于新的内置ajaxical功能,JSF2.x中的许多事情都以不同的方式完成,并且更加优雅。因此,当我查看文档时,我发现h:datatable没有与之关联的“呈现”属性。我猜f:ajax render=“table”允许使用该属性?我不明白你的意思。它肯定是文档中的标签属性。哇,我一定是看错了文档!因此,在进行特定选择时,此代码将呈现datatable。另外,如果我取消选择“特定”选项会怎么样。我想它不会取消渲染,是吗?基本上,我要做的是创建一个带有默认输入区域的页面,其中包含一个下拉列表,其中包含选择和一个“自定义”选择。从下拉列表中选择“自定义”时,将显示datatable。如果选择了“Custom”,然后取消选择它,我希望数据表消失,以此类推,比如禁用/启用。第二部分可能吗?看起来我实际上在使用a4j和a4j:ajax不会工作。有什么想法吗?它也可以与
配合使用。你的问题是由别的地方引起的。根据目前提供的信息很难说。
<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>