html5 – 是否可以使用JSF Facelets与HTML 4/5?

前端之家收集整理的这篇文章主要介绍了html5 – 是否可以使用JSF Facelets与HTML 4/5?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Facelets依赖于XML命名空间来处理XHTML。如何HTML 4,据我所知,HTML 5不支持命名空间。此外,HTML 5具有一些在XHTML中不可用的新元素。即使HTML 4和XHTML在他们支持的元素和属性方面也有一些差异。

问题是:是否可以使用Facelets渲染HTML 4/5文档?如果是,如何?

@H_403_4@

解决方法

由于Facelets是一种基于XML的视图技术,它基本上使用XML标记,因此不能将其与HTML4 doctype一起使用。 HTML4 doctype描述了几个不能自我关闭的元素,例如< link>,< Meta>,< br>和< hr&gt ;.但是,使用XML,你不得不像< link />,< Meta />等等关闭它们。所以使用HTML4 doctype绝对不是Facelets的一个选项(也就是说,当你尊重标准和/或害怕w3验证器,它将工作完美的大多数,如果不是所有的webbrowsers)。

另一方面,HTML5允许XML标记。这在chapter 3.2.2 – Elements中指定:

Example:

06000

Authors may optionally choose to use this same Syntax for void elements in the HTML Syntax as well. Some authors also choose to include whitespace before the slash,however this is not necessary. (Using whitespace in that fashion is a convention inherited from the compatibility guidelines in XHTML 1.0,Appendix C.)

我自己使用<!DOCTYPE html>一路上,也用JSF / Facelets,甚至没有<?xml?>声明在页面的顶部。它在所有浏览器中工作完美。使用XHTML doctype,你应该按照规范使用应用程序/ xhtml xml的内容类型,这将只使MSIE窒息(它不明白它)。因为它仍然是最广泛使用的浏览器之一…通过text / html替换XHTML内容类型是considered harmful,你也不想这样做。

根据你的参数:

HTML 5 do not support namespaces.

这没关系。命名空间只对基于XML的服务器端视图技术(如Facelets)感兴趣,而后者又可以使用这些标签生成纯HTML。以下示例对Facelets合法有效:

<!DOCTYPE html>
<html lang="en"
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Title</title>
    </h:head>
    <h:body>
        <h:outputText value="#{bean.text}" />
    </h:body>
</html>

这使得合法有效的HTML5(对于客户端):

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Title</title>
    </head>
    <body>
        Some text
    </body>
</html>

你看,Facelets已经删除了XHTML声明,因为它们在客户端没有意义。

和,

Also HTML 5 has some new elements that are not available in XHTML

这也没有意义。它是关于生成输出。哪个可以是HTML5好。你唯一的问题可能是浏览器支持和第三方JSF组件的可用性,它渲染HTML5特定的元素。自JSF 2.2以来,可以使用新的passthrough elements功能自定义元素转换为JSF组件。只需给HTML5元素一个jsf:id属性。它将被透明地内部解释为JSF组件树中的UIPanel实例(如< h:panelGroup>)。

<!DOCTYPE html>
<html lang="en"
    xmlns:jsf="http://xmlns.jcp.org/jsf"
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:h="http://xmlns.jcp.org/jsf/html"
>
    <h:head>
        <title>Title</title>
    </h:head>
    <h:body>
        <header jsf:id="header">Header</header>
        <nav jsf:id="nav">Nav</nav>
        <main jsf:id="main">Main</main>
        <footer jsf:id="footer">Footer</footer>
    </h:body>
</html>

你甚至可以从ajax中引用它,如< f:ajax render =“main”&gt ;. 实际上,XHTML是overhyped。其唯一的目的是使用基于XML的工具来简化HTML开发,这些工具可以在服务器端操作/转换/生成HTML页面(如Facelets)。但有些初学者也使用它,而不使用任何XML工具,并将其原样输出,因为它是“那么酷”,因为一些不清楚的原因。 不要误会我。 XHTML是伟大的服务器端视图技术。但只是不作为客户端标记技术。它在客户端完全没有价值。 也可以看看:
> Our XHTML wiki page
> How should a <!DOCTYPE> section look in JSF? HTML5 or XHTML?
> JavaServer Faces 2.2 and HTML5 support,why is XHTML still being used

@H_403_4@ @H_403_4@

猜你在找的HTML5相关文章