gpt4 book ai didi

java - Tag Library supports namespace: http://java. sun.com/jsf/composite/mycomponents,但没有为名称定义标签:foo

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:33:32 25 4
gpt4 key购买 nike

我有一个名为 <my:foo> 的复合组件我正在构建另一个名为 <my:bar> 的复合组件.但是当我尝试使用 <my:foo><cc:implementation>里面的 <my:bar> , 抛出以下异常:

<my:foo> Tag Library supports namespace: http://java.sun.com/jsf/composite/mycomponents, but no tag was defined for name: foo

这是怎么引起的,我该如何解决?

最佳答案

这是由 Mojarra 2.1.8 中引入的错误引起的,该错误在 2.1.9 中继续存在,并在 2.1.10 中得到修复。这个错误导致复合组件自己的 XML 命名空间不能在根 XML 元素中声明,如 <ui:component>/<ui:composition>/<html>/etc 如下:

<ui:component 
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:my="http://java.sun.com/jsf/composite/mycomponents"
>
<cc:interface>
...
</cc:interface>
<cc:implementation>
<my:foo />
</cc:implementation>
</ui:component>

当您尝试嵌套 <my:foo> 时,这将导致以下异常在<cc:implementation>里面.

<my:foo> Tag Library supports namespace: http://java.sun.com/jsf/composite/mycomponents, but no tag was defined for name: foo

除了降级到 2.1.7 并等待 2.1.10 发布之外,当前的解决方法是将 XML 命名空间声明移动到 <cc:implementation> 中。 .

<ui:component 
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite"
>
<cc:interface>
...
</cc:interface>
<cc:implementation xmlns:my="http://java.sun.com/jsf/composite/mycomponents">
<my:foo />
</cc:implementation>
</ui:component>

另见:

关于java - <my :foo> Tag Library supports namespace: http://java. sun.com/jsf/composite/mycomponents,但没有为名称定义标签:foo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10898906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com