【问题标题】:When using MyFaces 2.1, with Eclipse Juno, how do I get rid of a space after the doctype使用 MyFaces 2.1 和 Eclipse Juno 时,如何去掉 doctype 后的空格
【发布时间】:2013-01-01 09:10:06
【问题描述】:

我已经四处寻找答案,并尝试了很多东西,但没有运气。当我将 MyFaces 2.1 与 Eclipse Juno 一起使用并尝试创建 HTML5 页面时,我得到了

<!DOCTYTPE html >

注意“html”后面的空格。当在 FireFox 中使用 HTML Tidy 查看此页面时,它会抛出一个错误,指出它的文档类型无效。

源 xhtml 文件包含没有空格。有人有解决办法吗?

谢谢

丹

【问题讨论】:

  • 究竟是哪个 MyFaces 实现版本? “2.1”只是一个规范版本。目前最新的 MyFaces 2.1 实现版本是 2.1.10。你用的是那个版本?顺便说一句,我在 Mojarra 2.1.17 中看不到它——我一直使用 HTML5 doctype——而且我不相信 Eclipse 会以任何方式导致这种情况。
  • 我在 MyFaces 2.1.9 中。我今天将尝试最新版本。那很奇怪,什么都不应该增加空间。我尝试了数百种方法,但无济于事。页面显示正常,只是我收到了那些验证错误。
  • JSF 将 Facelets 文件解析为 XML 树,基于它构建 JSF 组件树,最终生成 HTML。所以它并不完全是从字面上发出 Facelets 文件 :) 无论如何,我能够用 MyFaces 2.1.9 和 2.1.10 重现您的问题。我去看看。

标签: jsf whitespace facelets doctype myfaces


【解决方案1】:

我至少可以在 MyFaces 2.1.9 和 2.1.10 中重现它(没有尝试过旧版本)。这个问题在 Mojarra 中没有体现。这无疑是 MyFaces 中的一个错误。我推荐report it to MyFaces guys。

与此同时,在他们修复它之前,我找到了一种解决方法。替换&lt;!DOCTYPE&gt;

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    ...
</html>

&lt;h:doctype&gt;

<ui:composition 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <h:doctype rootElement="html" />
    <html lang="en">
        ...
    </html>
</ui:composition>

它的渲染器生成正确的无空格文档类型。

这个问题与 Eclipse 没有任何关系。它只是一个像记事本一样的工具。

【讨论】:

  • 谢谢,这个解决方法奏效了。我会向 MyFaces 团队报告。
猜你喜欢
  • 2019-08-19
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 2020-08-27
  • 1970-01-01
  • 2018-09-21
相关资源
最近更新 更多