当前位置: 首页 > 面试题库 >

JavaServer Faces 2.2和HTML5支持,为什么仍在使用XHTML

吴修洁
2023-03-14
问题内容

在了解了JSF 2.2中的HTML5支持之后,我很惊讶地在用Netbeans中的新Web应用程序创建的模板文件中找到与以前的Facelets版本相同的XHTML文档类型。唯一的区别是HTML标记在JSF2.2中读取:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">

,而不是旧版JSF中的以下代码

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">

牢记HTML5的承诺而继续使用XHTML似乎有点错误。如果我从“注册库”而不是“服务器库”中选择2.2,则只能选择使用2.2。这是否影响框架版本应用于项目的方式?

Facelets是否过于依赖XHTML以支持HTML5?


问题答案:

好像几年前在XHTML宣传过多时一样,您误解了XHTML的目的。长话短说:检查我们的XHTMLWiki页面。仔细阅读。简而言之,Facelets完全不关心生成的HTML输出中使用的doctype。您可以完美地在Facelets模板中声明HTML5文档类型。

确实不幸的是,Netbeans默认情况下使用XHTMLdoctype准备文档,而HTML5如今是推荐的doctype。我不使用Netbeans,但是在Eclipse中,您可以轻松地编辑这些模板,甚至创建自己的模板。您可以将整个XHTML文档类型替换为HTML5文档类型。您可以通过IDE首选项中的_Web»HTML文件»编辑器»模板_ 来查找/创建这些模板。

请注意,JSF
2.2中的HTML5支持与能够专门支持HTML5文档类型无关。相反,即使使用旧版JSP,所有JSF版本都支持此功能。JSP和Facelets是允许您生成HTML输出的视图技术,可以完美地将HTML5用作HTML5。以下紧密相关的答案也对此进行了详细说明:是否可以将JSF+ Facelets与HTML 4/5一起使用?

相反,JSF 2.2中的HTML5支持涵盖了定义自定义JSF组件属性并将自定义HTML元素转换为JSF组件的可能性。在JSF
2.1及更高版本中,这是不可能的。data-xxx默认JSF渲染器将忽略所有自定义JSF组件属性(包括HTML5推荐的属性)。另请参见以下相关答案:JSF不呈现自定义HTML标记属性。在JSF
2.2中,您可以通过新的http://xmlns.jcp.org/jsf/passthrough名称空间轻松地指定自定义属性,如下所示:

<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:inputText ... a:autocorrect="off" />

这最终将由<h:inputText>不支持的属性autocorrect最终实际包含在生成的HTML输出中。请注意,我使用XML名称空间前缀a(“attribute”)而不是Java EE教程中p所示的那样,否则它将与pPrimeFaces的默认XML名称空间前缀冲突。

将自定义HTML元素(包括HTML5元素)转换为JSF组件仅需指定jsf诸如的属性即可jsf:id

<html ... xmlns:jsf="http://xmlns.jcp.org/jsf">
...
<header jsf:id="header">...</header>
<main jsf:id="main">...</main>
<footer jsf:id="footer">...</footer>

那些被掩盖的将变成UIPanel(如<h:panelGroup>)。是的,它们在例如中是可引用的<f:ajax render>

换句话说,“ HTML5支持”再次是“自定义属性支持”的另一个流行词。



 类似资料:
  • 问题内容: 在进行了-jvm-prevent-tail-call-optimizations之后的两年,似乎有一个原型 实现,并且MLVM一段时间以来将该功能列为“ proto 80%”。 Sun / Oracle方面对支持尾部调用是否没有积极的兴趣,还是就像JVM所提到的那样,尾部调用“ 注定要在每个功能优先级列表上排在第二位 ”?语言峰会? 如果有人测试了MLVM构建并可以分享一些关于其运行状

  • 问题内容: HTML5 doctype示例。 无论IE9和Chrome14日志作为内部元素 HTML5规范明确指出: 后跟零个或多个tbody元素或一个或多个tr元素 此外。HTML5规范明确指出: 作为table元素的子元素,在任何标题,colgroup和thead元素之后,但仅当没有tbody元素成为table元素的子元素时。 为什么浏览器会破坏我的DOM并注入一个when 我没有要一个 没有

  • 本文向大家介绍为什么Java不支持<<相关面试题,主要包含被问及为什么Java不支持<<时的应答技巧和注意事项,需要的朋友参考一下 Java添加了运算符“ >>>”来执行逻辑右移,但是由于 逻辑和算术左移运算是相同的 ,因此Java中没有“ <<<”运算符。 来自Java的Shifts …

  • 我注意到一件奇怪的事情,显然Firefox说它支持HTTPS上的Brotli,但不支持HTTP?Brotli与gzip类似,但效率更高,为什么它会将其限制为HTTPS?在HTTPS选项卡上,我看到: 他被派去了。但在另一个网站上,我没有看到。为什么它不能做Brotli压缩HTTP?

  • 我在读维基百科上的Favicon页面。他们提到了Favicon的HTML5规范: 当前的HTML5规范建议使用标记中的属性rel=“icon”sizes=“图标尺寸的空格分隔列表”指定多个尺寸的尺寸图标。[源]通过在标签中包含type=“file content-type”形式的图标内容类型,可以提供多种图标格式,包括诸如Microsoft.ico和Macintosh.icns文件等容器格式,以及

  • 问题内容: Java为什么不包括对无符号整数的支持? 在我看来,这是一个奇怪的遗漏,因为它们允许人们编写不太可能在意外大的输入上产生溢出的代码。 此外,使用无符号整数可以是一种自我证明的形式,因为它们指示无符号int打算保留的值永远不会为负。 最后,在某些情况下,无符号整数对于某些操作(例如除法)可能更有效。 包括这些的不利之处是什么? 问题答案: 在两行之间阅读时,我认为逻辑是这样的: 通常,J