目前我已经开发了一个带有JSF的前端,它加载了太多的数据,并不是用户需要的所有情况,这个提到的数据除以基于一个条件呈现的Tab“”:
<p:tab id="summary-tab2" title="Tittle of tab"
rendered="#{(myBean.SomeCondition)}">
<ui:insert name="summary-tab-characteristics">
<h:panelGroup id="panelData">
<ot:otherJSF id="otherHtml" application="#someBean}"/>
</h:panelGroup>
</ui:insert>
</p:tab>
在许多情况下,用户不需要查看该选项卡内的信息,因此,当且仅当用户单击“Summary-tab2”选项卡时,我需要PanelGroup“PanelData”来“渲染”。
我怎么能这样做?
答案 0 :(得分:0)
如果您正在使用PrimeFaces的TabView组件,您只需将动态属性设置为true即可。
动态标签
tabview中有两个toggleModes,非动态(默认)和 动态。默认情况下,所有选项卡内容都将呈现给客户端 另一方面,在动态模式下,只有活动标签内容 呈现,当选择非活动标签页时,内容为 加载了ajax。动态模式在减少页面大小方面非常方便,因为 非活动标签是延迟加载的,页面加载速度更快。启用 动态加载,只需将动态选项设置为true即可。
<p:tabView dynamic="true"> //tabs </p:tabView>
随着小组:
<p:panel collapsed="true" header="title" toggleable="true">
<f:ajax event="toggle" listener="#{bean.makeTheConditionTrue()}"render="@this" />
<ui:fragment rendered="#{bean.condition}">
//your content
</ui:fragment>
</p:panel>
但通过这种方式,内容将在每个切换事件中更新。我不确定你想要那样的东西。