Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF/Facelets:为什么将JSF/Facelets与HTML标记混合不是一个好主意?_Jsf_Xhtml_Facelets - Fatal编程技术网

JSF/Facelets:为什么将JSF/Facelets与HTML标记混合不是一个好主意?

JSF/Facelets:为什么将JSF/Facelets与HTML标记混合不是一个好主意?,jsf,xhtml,facelets,Jsf,Xhtml,Facelets,我已经读过好几遍了:一些开发人员并不提倡在他们的XHTML文件中交错使用JSF/Facelets标记和HTML标记。显然HTML标记不会成为UI组件树的一部分,但这有什么缺点呢 我经常发现一些代码示例,其中作者进行了这种混合: “Seam in Action”还交错了JSF/Facelets和HTML标记 我不知道该用什么。我开始混合标签,但我开始相信这可能不是正确的选择。然而,我不明白为什么纯粹主义的方法更可取 我肯定地知道,我有一个表,其中JSF数据表没有给我足够的灵活性来显示我需要的

我已经读过好几遍了:一些开发人员并不提倡在他们的XHTML文件中交错使用JSF/Facelets标记和HTML标记。显然HTML标记不会成为UI组件树的一部分,但这有什么缺点呢

我经常发现一些代码示例,其中作者进行了这种混合:

“Seam in Action”还交错了JSF/Facelets和HTML标记

我不知道该用什么。我开始混合标签,但我开始相信这可能不是正确的选择。然而,我不明白为什么纯粹主义的方法更可取

我肯定地知道,我有一个表,其中JSF数据表没有给我足够的灵活性来显示我需要的内容,所以纯粹地这样做是不可能的

此外,我想知道为什么上面的示例中没有一个使用f:view等来代替硬编码的html、head、body等标记


有人能帮我澄清一下吗?

一般来说,我在布局/模板页面中混合使用betweek HTML和Facelets标记。但是对于实际的内容页面,我尝试只使用我选择的JSF库(JSF+RichFaces)中可用的JSF标记


这样,我可以更好地控制显示和隐藏哪些元素,以及每个元素中的内容,但我仍然可以在facelets模板文件中硬编码我的主页布局。

在JSF 1.0/1.1时代,这确实“不是一个好主意”,因为当使用JSP作为视图技术时,JSF组件树中不会自动获取所有HTML。JSP急切地将所有普通HTML呈现在JSF组件树之前。例如

Lorem ipsum dolor sit amet
献祭精英

被渲染为

Lorem ipsum dolor sit amet
献祭精英

价值1
要解决此问题,您需要引入

Lorem ipsum dolor sit amet
献祭精英

这是一个真正的维护痛苦。这是JSF1.0/1.1被如此憎恨的主要原因之一

自从JSF1.2使用新的视图处理程序以来,不再需要
。开发人员现在可以松一口气了。此外,新的视图处理程序允许JSF使用与JSP不同的视图技术,Facelets就是这样诞生的

另见:

请参阅关于JSF/HTML标记的帮助。至少是关于div和span,但我如何管理p、br,尤其是标题?从我在参考问题中的回答来看:“实际上,我发现很难遵循这一建议,最终混合了html和jsf,例如,对于标题或换行符,我使用html。”嗯,令人失望。难道不应该有JSF的方式吗?我不明白为什么这不是一个好主意,这是令人失望的。也许你是JSF 1.0/1.1时代混合JSF+HTML=bad的神话的受害者?有关更多历史,请参见+1以获得简明的解释和完美的示例。我以前就知道这一点,但说得很好。请注意,使用纯html而不是提供相同结果的组件(div vs t:div)可能会有一点性能优势,因为这样可以减少解析时间。但是要知道html标记并不是作为组件包含在视图根目录(afaik)中@Steven:它对视图构建时间没有影响。无论如何,它都会被解析和检查(并转换为专门的
ui指令
组件)。如果您使用了相对较多的视图渲染时间,则仅视图渲染时间可能会显著加快,因为它们被渲染为“模板文本”,没有任何状态和属性(但仍然支持EL评估)。