我需要根据下拉列表中的选择来显示和隐藏数据表。这可能吗;如果是的话,我该怎么做。
<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监听器的方法。我试图用一个布尔值添加一个渲染属性,但它不起作用(或者我没有做对),无论哪种方式,希望有人可以帮助我。
由于
答案 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;
}
}