gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:01:20 24 4
gpt4 key购买 nike

是否可以告诉 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com