JSF 在 SVG 之后吞下结束标记

标签 jsf svg xml-parsing

我正在使用两个 <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正在吞噬第一次收盘</li>当它呈现 HTML 时。

这是一个错误还是我的 xhtml 无效?

我正在使用 Mojarra 2.1.7。

更新:正如@BalusC 建议的那样,我将此报告给 the Mojarra Guys .

更新 2:用 Mojarra 修复 2.1.262.2.3

最佳答案

我可以在 2.1.24 中重现它。我不确定这是否是 Facelets 的 SAX 解析器中的一个错误,但它确实看起来很像它在嵌套命名空间中被混淆了。你和 <svg xmlns>声明一个新的默认 XML 命名空间,它似乎覆盖了 <html xmlns>一种用于 HTML 标签。我推荐给 report这个问题给 Mojarra 伙计们。

无论如何,在 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 可以通过这种方式立即重用。

关于JSF 在 SVG 之后吞下结束标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875593/

相关文章:

java - 如何修复 JAXB 上下文的 newInstance 中的 nullPointerException

java - XMLStreamReader 和解码 SOAP 消息

javascript - 在 JavaScript 文件中混合 JSF EL

javascript - 从 Javascript 调用命令链接操作

java - jquery 数据表不适用于 JSF

xcode - 在 Xcode 中以文本形式查看 .svg 文件?

java - 动态添加 UI 组件

javascript - 防止在 iOS 设备上缩放时出现锯齿 SVG 元素

css - SVG 图像模式如何在保持纵横比的情况下工作?

android - XML 解析给出 NullPointerException Error with Asynctask