【问题标题】:Doctype in JSF MojarraJSF Mojarra 中的文档类型
【发布时间】:2013-03-24 02:25:18
【问题描述】:

我应该在 JSF 页面中使用什么 Doctype?前几天我试图从 Mojarra 2.1.13 迁移到 2.1.18,似乎解释文档类型的方式发生了变化。在根模板中,我有以下 DOC TYPE

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

我也必须包括这个吗?

<?xml version="1.0"?>

在复合材料(使用此模板)中,我曾经有以下 doctype

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

但似乎 Mojarra 2.1.18 并不真正支持这一点。此外,我在任何 JSF 2.0 参考资料中都没有找到它,这是我们曾经在 JSF 1.2 中使用的。如果我在复合页面中有这个 doctype,它将呈现复合 doctype 而不是模板中的 html。结果,css样式乱了。

那么在 JSF 2.0 中正确使用文档类型是什么?或者这是 Mojarra 的问题?我没有找到任何关于此的参考。

【问题讨论】:

  • Mojarra 2.1.14 中的文档类型解析中断,但应在 2.1.17 中修复。它应该使用主模板的文档类型并忽略&lt;ui:component|composition&gt; 之外的任何文档类型。你真的在使用 2.1.18 吗?启动过程中记录了什么版本?你试过现在的 2.1.20 吗?
  • 它打印出这个:Initializing Mojarra 2.1.18-jbossorg-1 20130205-1414 for context ''。我使用 JBoss EAP 6.1 Alpha1。我不知道如何升级 JBoss 服务器的 Mojarra 版本。他们使用自己构建的
  • 哦,JBoss 提供的?你具体是怎么升级的?您是否还考虑了 API 而不仅仅是 impl?
  • 我正在使用 JBoss EAP 6.1 提供的默认 Mojarra。阿尔法1。有 Mojarra 2.1.18。
  • 呃,因此您实际上迁移到了更新的 JBoss 版本?

标签: jsf-2 doctype mojarra


【解决方案1】:

我为此创建了一个 JIRA 问题:http://java.net/jira/browse/JAVASERVERFACES-2820

它已被关闭,因为这是预期的行为。

“复合页面是您实际使用模板的地方。因此它是您指定文档类型的最外层文件。因此它定义了将呈现的文档类型。”

只需在模板中指定 doctype 即可

【讨论】:

  • 在我的情况下 - 如果文档类型仅在模板中,其他地方都没有 - 我在视图中有“复合”类型,即使模板中指定了 html :-(
  • 你使用什么 mojarra 版本?
  • 如果我没有在任何地方包含任何文档类型,它会默认呈现。如果我只将 doctype 放入模板中,则会呈现该文档类型。如果我将 doctype 放入复合视图中,则会呈现该文档类型(并且它还会覆盖模板中的 doctype)。我正在使用 Mojarra 2.1.19
  • 我使用 mojarra 2.1.18 并且我有这样的行为:如果我将 doctype 放入复合视图 - 我会将它放在渲染页面上。如果我不将 doctype 放入复合视图 - 即使此页面的模板具有 doctype html,我也会在呈现的页面上使用 doctype 复合。看起来复合文档类型是默认的 - 而 mojarra 只考虑复合视图。也许 2.1.19 修复了?
【解决方案2】:

我还将 Jboss 7.1 迁移到了 JBoss EAP 6.1

我发现不是很好的解决方法 - 在每个页面上插入(不是模板):

<!DOCTYPE html>

e。 g.:

<!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" template="template.xhtml"> 

还有其他方法 - 从主模板中读取 doctype 吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2011-08-14
    • 2011-10-15
    • 2015-12-25
    • 2015-07-09
    相关资源
    最近更新 更多