我在<svg>
内使用了两个<ul>
元素。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
...
<ul>
<li>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" >...</svg>
</li>
<li>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" >...</svg>
</li>
</ul>
...
</html>
JSF在呈现HTML时吞下了第一个结束</li>
。
这是一个错误还是我的xhtml无效?
我正在使用Mojarra 2.1.7。
更新:正如@BalusC建议我向the Mojarra Guys报告此内容。
答案 0 :(得分:4)
我可以在2.1.24中重现它。我不确定这是Facelets&#39;中的错误。 SAX解析器,但它确实看起来很像它在嵌套命名空间中混淆。您在<svg xmlns>
声明了一个新的默认XML命名空间,该命名空间似乎覆盖了HTML标记的<html xmlns>
。我向Mojarra家伙推荐report这个问题。
在任何情况下,在Facelets中使用SVG的正确方法是将整个<svg>
内容拆分为自己的.svg
文件,并通过<ui:include>
将其包含在内。
<ul>
<li>
<ui:include src="/resources/svg/one.svg" />
</li>
<li>
<ui:include src="/resources/svg/two.svg" />
</li>
</ul>
这样命名空间工作正常。额外的好处是,您的SVG可以立即重复使用。