Мы используем составные компоненты внутри других компонентов нашего проекта. Все прекрасно работает на JBoss 7.1.0, но на JBoss 7.1.1 мы получаем ошибки, как это:Вложенный составной компонент, разбитый на JBoss 7.1.1
No handlers found for exception javax.faces.view.facelets.TagException:
/resources/components/my/bigComponent.xhtml @21,47 <my:nestedComponent>
Tag Library supports namespace: http://java.sun.com/jsf/composite/components/my,
but no tag was defined for name: nestedComponent
Мы попробовали решение, предложенное в this JBoss community thread, но это ничего не изменило наши проблемы (швами мы не the only one in this case, и решение может не работать, потому что мы также находимся в теге ui:define
из файла шаблона).
Вот наши два компонента:
вложенности:
<!DOCTYPE html PUBLIC ...>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:my="http://java.sun.com/jsf/composite/components/my" >
<cc:interface componentType="...">
<h:panelGroup>
<cc:attribute name="someAttribute" />
</h:panelGroup>
</cc:interface>
<cc:implementation>
<my:nestedComponent content="a text" />
</cc:implementation>
</html>
Вложенный:
<!DOCTYPE html PUBLIC ...>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:cc="http://java.sun.com/jsf/composite">
<cc:interface>
<cc:attribute name="content" />
</cc:interface>
<cc:implementation>
<h:outputText value="#{cc.attrs.content}" />
</cc:implementation>
</html>
ли регресс? Мы делаем что-то неправильно? В 1-й линии, предложенное решение подразумевает в гнездовой компонент что-то вроде этого:
<composite:interface>
<composite:facet name="greet1"/>
<composite:facet name="greet2"/>
</composite:interface>
<composite:implementation>
<lib:greet1 name="Stan" />
<lib:greet2 name="Silvert" />
</composite:implementation>
Что это composite:facet
без composite:renderFacet
для?
Какие реализации JSF вы используете? Обратите внимание, поскольку композитный компонент MyFaces 2.1.6/2.0.12 не может содержать имена библиотек с косой чертой. Имя вашей библиотеки - «components/my», что неверно. Подробнее см. В [MYFACES-3454] (https://issues.apache.org/jira/browse/MYFACES-3454). – lu4242
Мы используем Primefaces 3.2 и версию Mojarra, предоставленную JBoss 7.1.1. Мы всегда использовали такие имена библиотек без каких-либо проблем до последней версии JBoss. –