根据下拉值隐藏Primefaces数据表

时间:2018-01-14 21:57:05

标签: jsf primefaces

我需要根据下拉列表中的选择来显示和隐藏数据表。这可能吗;如果是的话,我该怎么做。

<h:panelGrid columns="2" cellpadding="5">
     <p:outputLabel for="lookupType" value="Lookup Type" />
     <p:selectOneMenu id="lookupType" value="#{lookupTypeBean.lookupType}" style="width: 300px">
          <f:selectItem itemLabel="-- Select Lookup Type --" itemValue="" noSelectionOption="true" />
          <f:selectItems value="#{lookupTypeBean.lookupTypes}" />
          <p:ajax listener="#{lookupTypeBean.lookupTypeChange()}" />
     </p:selectOneMenu>
</h:panelGrid>

我的bean中有一个连接到ajax监听器的方法。我试图用一个布尔值添加一个渲染属性,但它不起作用(或者我没有做对),无论哪种方式,希望有人可以帮助我。

由于

1 个答案:

答案 0 :(得分:1)

是的,您可以创建一个布尔变量并在下拉列表更改时更改它的值,然后使用visible属性将此行为应用于数据表。根据变量的变化。

以下示例。

<h:form>
      <p:selectOneMenu id="visibility" value="#{someBean.dataTableShow}" style="width:125px">
          <p:ajax update="panel"/>
         <f:selectItem itemLabel="Hide" itemValue="false"/>
         <f:selectItem itemLabel="Show" itemValue="true"/>
      </p:selectOneMenu>
   </h:form>

<p:panel visible="${someBean.dataTableShow}" id="panel">
    <p:dataTable var="Id" id="table">
        <p:column headerText="Id">
            <h:outputText/>
        </p:column>

        <p:column headerText="Car">
            <h:outputText/>
        </p:column>
    </p:dataTable>
</p:panel>

这是视图代码,您需要使用ajax标记来呈现数据表而不刷新页面。

然后你需要一个变量来保存当前的数据表状态,如果显示则为true,否则为false。

@ManagedBean
@SessionScoped
public class SomeBean {

    private boolean dataTableShow = true;

    public boolean isDataTableShow() {
        return dataTableShow;
    }

    public void setDataTableShow(boolean dataTableShow) {
        this.dataTableShow = dataTableShow;
    }
}