我的JSF template.xhtml
文件看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:jsf="http://xmlns.jcp.org/jsf">
<h:head>
...
</h:head>
<h:body>
<header jsf:id="head">
...
</header>
<nav jsf:id="nav">
...
</nav>
<main jsf:id="main">
...
</main>
<footer jsf:id="foot">
...
</footer>
</h:body>
</html>
Eclipse抱怨
未知标记(main)。
我想知道是我的文件格式不正确,还是Eclipse无法正确验证这一点。
这不是JSF的问题。当删除passthrough元素触发器jsf:id
时,您仍然会遇到完全相同的问题。如果不在XHTML文件中的任何位置使用JSF标记/属性,您甚至仍然会遇到完全相同的问题。
<main>
标签在HTML5中相对较新(它只是在2013年8月的HTML5CR中添加的)。XHTML文档中当前的其他HTML5标记已经存在更长的时间(早在2008年)。Eclipse根本不将<main>
识别为在默认XML名称空间中注册的标记(由http://www.w3.org/1999/xhtml
标识)。Eclipse拥有一个注册标签的内部列表。如果升级到最新的Eclipse(SR)版本并不能解决问题,那么您最好将此问题报告给Eclipse人员。同时,只需选择快速修复选项"忽略HTML5验证中的'main'元素"。
与具体问题无关,XML prolog不属于那里。摆脱它。此外,我还想知道";标题"nav"主";以及";页脚";是整个JSF组件。我真的没有看到任何有用的现实世界电器与此。你最好保持它们的纯HTML格式。这样可以节省不必要的开销。
另请参阅:
- XML prolog/指令未从XHTML输出中删除
- JavaServer Faces2.2和HTML5支持,为什么XHTML仍在使用