gpt4 book ai didi

jsf - 有条件地渲染

转载 作者:行者123 更新时间:2023-12-04 00:38:46 25 4
gpt4 key购买 nike

我正在尝试切换显示 <rich:dataTable> 的页面.在我刚刚包含 <ui:include> 之前模板,它只会一直显示表格。

<ui:include src="../log/viewDlg.xhtml"/>

现在我希望能够在网页上打开/关闭它。在页面上显示可能带有按钮或链接。我怎样才能实现它?

更新 1:由于某些奇怪的原因,我无法让它显示出来,这是我迄今为止根据反馈写的内容

看法:
<a4j:commandLink value="View"
action="#{bean.showview}" render="viewPanel"/>

<h:panelGroup id="viewPanel">
<h:panelGroup id="tableRenderPanel" rendered="#{bean.showPolicyView}">
<ui:include src="../log/viewDlg.xhtml"/>
</h:panelGroup>
</h:panelGroup>

支撑 bean :
private boolean showPolicyView = false;

public void showView() {
showPolicyView = !showPolicyView;
}

public boolean isShowPolicyView(){
return showPolicyView;
}

最佳答案

包裹您的 <ui:include>内二<h:panelGroup>元素。这里有一个问题,您不能重新渲染条件组件。这是为什么?因为当元素的 rendered属性解析为 false ,在渲染 View 时不会考虑它,因此它不能成为操作的目标(在这种情况下,与渲染相关)。

跳转到代码,你会得到这个:

<h:panelGroup id="wrapperPanel">
<h:panelGroup id="tableRenderPanel" rendered="#{yourBean.renderTable}">
<ui:include src="../log/viewDlg.xhtml"/>
</h:panelGroup>
</h:panelGroup>
yourBean#renderTableBoolean确定组件是否将被呈现的属性。当它评估为 false 时,该组件不包含在组件树中。

切换 View

要切换 View ,只需创建一个刷新页面的 bean 方法
<h:commandLink action="#{yourBean.toggleTableView}"/>

或通过 AJAX 的特定面板。要在 JSF 1.2 中做到这一点,如果可以的话,依靠 RichFaces 之类的扩展来引入 AJAX。例如,如果您选择 RichFaces,您可以使用 <a4j:commandLink/>和它的方便 render (或 reRender 在旧版本中)属性来实现您通常可以使用 <f:ajax/> 执行的操作在 JSF 2
<a4j:commandLink action="#{yourBean.toggleTableView}" reRender="wrapperPannel"/>

或者,另一种选择是
<a4j:commandLink action="#{yourBean.toggleTableView}">
<a4j:support event="oncomplete" reRender="wrapperPannel"/>
</a4j:commandLink>

请注意 reRender属性可能因页面结构而异,但它最终应始终引用包装面板的 id。另外, reRender被重命名为简单的 render在后期 RichFaces 版本中。

所以,假设你有一个 renderTable yourBean 中的属性(getter + setter) , toggleTableView必须更改它,以便动态定义是否要呈现组件( renderTable = false )。

介绍 RichFaces

查询 this link寻求在您的项目中设置 RichFaces 的帮助。

关于jsf - 有条件地渲染 <ui :include>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18703704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com