如何解决在ui:include资源中生成唯一ID标签
| 我正在构建一个页面,该页面将具有标签的多个实例,如下所示。<ui:include id=\"foo\" src=\"images/something.svg\" />
Faces Servlet通过svg文件传递给浏览器,除了找到的EL表达式外,没有任何其他处理,这很好。问题在于包含文件中的id标签是静态的,因此该文件的多个包含将生成非唯一的ID标签。
我想要做的是类似于h:form的操作,其中ui:include标记的ID放在包含文件中元素的ID之前。然后,我可以明确地解决所有问题。
有没有公认的“最佳实践”方法?
更新:也许我应该通过跟进来扩大这个问题,首先我需要这样做吗?我的目标是唯一解决svg文档包含的每个副本中的标签,该标签可以有任意数量。我有可用的jQuery,因为它还是被Primefaces引入的。
因此,如果我有这样的JSF文件:
<ui:include id=\"foo\" src=\"images/something.svg\" />
<ui:include id=\"bar\" src=\"images/something.svg\" />
在something.svg文件中,我有一个标签
<rect id=\"blink\" ... />
在页面上的javascript中,我希望能够获得指向foo:blink或bar:blink的指针。我想我可以使用XPath表达式,但我知道它们有点慢。我无法想象发明ui:include标签的家伙还没有考虑如何处理这个问题,所以我假设我错过了一些显而易见的事情。
解决方法
以
<ui:param>
的价格通过。
<ui:include src=\"images/something.svg\">
<ui:param name=\"id\" value=\"foo\" />
</ui:include>
<ui:include src=\"images/something.svg\">
<ui:param name=\"id\" value=\"bar\" />
</ui:include>
您可以通过包含文件的EL中的参数名称“ 5”来引用它。例如。
<rect id=\"#{id}_blink\" ... />
,您可以使用:
<f:subview id=\"uniqueXXX\">
另请参见以下示例:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。