这是由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>
当您尝试嵌套
<my:foo>在中时,这将导致以下异常
<cc:implementation>。
<my:foo>标记库支持名称空间:http :
//java.sun.com/jsf/composite/mycomponents,但是未为名称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>
也可以看看:
- Mojarra第2392期
- Mojarra第2437期



