如何不在 JSF 中渲染整个块?

Posted

技术标签:

【中文标题】如何不在 JSF 中渲染整个块?【英文标题】:How to not render whole block in JSF? 【发布时间】:2012-01-13 22:43:05 【问题描述】:

是否有一个 JSF 2.1 组件可以让我有条件地渲染(或不渲染)它的所有内容?类似的东西

<h:component rendered="#user.loggedIn">

...a bunch of jsf components and html code...
...even more HTML code...

</h:component>

我正在使用 PrimeFaces 3M4,因为这可能会影响您的回答!

【问题讨论】:

【参考方案1】:
<h:panelGroup>

如果你设置属性layout="block",你将有一个&lt;div&gt;标签

否则,你有一个&lt;span&gt; 标签。

【讨论】:

就是这样。一个 div 正是我所需要的。【参考方案2】:

一般来说,大多数 jsf 组件都支持 render 属性(从来没有碰到不支持的), 像h:panelGrid or h:panelGroup 这样的容器组件支持渲染属性,如果它设置为 false,它的所有子组件也将被隐藏

primefaces 组件也是如此,如果不是,它可能是一个错误(我认为 primefaces 的 tabview 存在问题)

这是 primefaces 用户指南的链接,您可以在那里找到所有 primefaces 组件支持的属性User’s Guide for 3.0.M4

【讨论】:

感谢您提供更多信息。我已经知道结构良好且完整的 PF 手册,但无法弄清楚(不)渲染元素块的最简单方法是什么,分别用什么组件最好。

以上是关于如何不在 JSF 中渲染整个块?的主要内容,如果未能解决你的问题,请参考以下文章

更改特定索引而不在 Vuejs 中重新渲染整个数组

根据用户角色渲染 JSF 组件

如何迭代List 并渲染JSF Facelets中的每个项目

JSF2 - 为啥渲染响应不重新渲染组件设置?

具有渲染属性的jsf组件验证失败

JSF 2:在渲染属性中使用枚举