簡體   English   中英

<my:foo>標記庫支持命名空間:http://java.sun.com/jsf/composite/mycomponents,但沒有為name定義標記:foo

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

我有一個名為<my:foo>的復合組件,我正在構建另一個名為<my:bar>復合組件。 但是當我嘗試在<my:foo><cc:implementation>中使用<my:foo> <my:bar> ,拋出了以下異常:

<my:foo>標記庫支持命名空間: http//java.sun.com/jsf/composite/mycomponents ,但沒有為name定義標記:foo

這是怎么造成的,我該如何解決?

這是由Mojarra 2.1.8中引入的錯誤引起的,在2.1.9中繼續,並在2.1.10中修復。 此錯誤導致復合組件自己的XML命名空間無法在<ui:component> / <ui:composition> / <html> / etc等根XML元素中聲明,如下所示:

<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>

當您嘗試在<cc:implementation>嵌套<my:foo>時,這將導致以下異常。

<my:foo>標記庫支持命名空間: http//java.sun.com/jsf/composite/mycomponents ,但沒有為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>

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM