【发布时间】:2011-07-19 13:11:35
【问题描述】:
我想用 JSF 设计一个网页。
我可以使用<h:panelGroup> 和<h:panelGrid> 来布局页面的某些部分,或者,我可以使用<p>、<div> 等代替。
只是想知道哪个更适合最佳实践。
谢谢!
【问题讨论】:
我想用 JSF 设计一个网页。
我可以使用<h:panelGroup> 和<h:panelGrid> 来布局页面的某些部分,或者,我可以使用<p>、<div> 等代替。
只是想知道哪个更适合最佳实践。
谢谢!
【问题讨论】:
我最近的实践案例:
1. 对于<p> 和<div>,您不能使用rendered 属性
2. 使您的代码更加结构化和稳固 - 便于您的代码的其他用户阅读
【讨论】:
建议不要将 jsf 与 html 混为一谈。背景:那么您的 jsf 页面可以呈现为与 html 不同的内容。但据我所知,到目前为止,只有 html 的渲染器(尽管您可以编写自己的)。
在实践中,我发现很难遵循这个建议,最终混合了 html 和 jsf,例如对于标题或换行符,我使用 html。
【讨论】:
如果您不需要 JSF 标签提供的功能,我更喜欢使用纯 HTML。
例如,<h:panelGroup> 有一个 rendered 属性,允许您绑定到支持 bean 布尔变量以有条件地显示输出,但使用 <div> 或 <span>,您不能这样做。
<h:panelGroup> 默认会生成一个<span>。如果您更喜欢<div>,那么您可以使用<h:panelGroup layout="block">。它将为您生成一个<div>。
【讨论】:
layout、style 或styleClass 属性的<h:panelGroup/> 标签既不会呈现<div/>,也不会呈现<span/>。它可以纯粹用作使用rendered 属性显示/隐藏页面部分的一种方式。
作为一般规则,我在布局页面中混合使用 betweek HTML 和 Facelets 标签。但是对于实际的内容页面,我尝试仅使用我选择的 JSF 库(JSF + RichFaces)中可用的 JSF 标记。
这样我可以更好地控制要显示和隐藏的元素,以及每个元素中的内容,但我仍然可以在 facelets 模板文件中硬编码我的主页布局。
【讨论】: