jsf-2.2 - 如何在 JSF 2.2 中指定目标 DOCTYPE?

标签 jsf-2.2 doctype mojarra

是否可以告诉 Mojarra 2.2 在生成的 html 页面中呈现哪个 DocType?

它似乎总是呈现以下 HTML5 Doctype:

<!DOCTYPE html>

在我们的 Facelet 模板中,我们使用以下 DocType 声明,并且希望将其保留在生成的 HTML 中:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

模板:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">

<h:body>
  <ui:insert name="content">Will be replaced</ui:insert>
</h:body>
</html>

内容:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                template="/templates/standalone.xhtml">

    <ui:define name="content">
      <h:panelGroup>
        Foo
      </h:panelGroup>
    </ui:define>
</ui:composition>

结果:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><body>
        Foo
      </body>
</html>

我使用 GlassFish 4.1 在 Mojarra 2.2.7 和 2.2.12 上进行了尝试。

最佳答案

我在将 JSF 生成的内容后处理为 PDF 格式时遇到了这个错误。我还注意到使用 <h:doctype>结果生成了两个文档类型。

幸运的是,我的问题是后期处理,我可以使用 String.replace("<!DOCTYPE html>", XHTML_DOCTYPE)解决这个问题。在 servlet 环境中,您可能必须使用过滤器或包装 HttpServletResponse动态修改文档类型。或者您可以修复 JSF 实现。这是最有道理的。

关于jsf-2.2 - 如何在 JSF 2.2 中指定目标 DOCTYPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31556859/

相关文章:

JSF NumberFormatException 与 f :setPropertyActionListener

jsf-2 - Bean 验证在 JSF2.2 (Majorra 2.2.5) 下不起作用

xml - 如何将 XML 片段包含到 XML 文档中

html - 如何构建一个所有行和单元格都彼此相邻的 HTML 表格?

xml - 在 DOCTYPE XSLT 2.0 Saxon9he 中插入 ENTITY 声明

ajax - 在 Ajax 请求期间处理错误的规范方法是什么?

jsf-2.2 - CDI ViewScope & PrettyFaces : Multiple calls to @PostConstruct (JSF 2. 2)

java - JSF 2.2资源应该放在哪里 : WEB-INF or root

jsf - JSF 2.2 中的自定义 FaceletFactory/虚拟主机 facelets 的替代品

java - JSF bean 访问失败