我应该在JSF页面中使用什么Doctype?前几天我正试图从Mojarra 2.1.13迁移到2.1.18,似乎解释了doc类型的方式发生了变化。在根模板中,我有以下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中doctypes的正确用法是什么。或者这是Mojarra的问题?我没有找到任何关于此的参考。
答案 0 :(得分:3)
我为此创建了一个JIRA问题:http://java.net/jira/browse/JAVASERVERFACES-2820
它已被关闭,因为这是预期的行为。
“复合页面是您实际使用模板的位置。因此,它是您指定文档类型的最外层文件。因此它定义了将要呈现的文档类型。”
只需在模板中指定doctype即可
答案 1 :(得分:0)
我还将Jboss 7.1迁移到JBoss EAP 6.1
我发现不是很好的解决方法 - 在每个页面上插入(不是模板):
<!DOCTYPE html>
即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吗?