У меня есть функциональный файл тегов JSF <w:export>
, который по сути является оберткой Primefaces <p:dataExporter>
. Это уже работает и работает некоторое время.
Недавно возникла необходимость в разработке другого файла тегов <w:table>
, который, в свою очередь, использовал бы файл тегов <w:export>
. Однако, как только я включаю <w:export>
и представляю страницу, используя новый файл тегов, возникает ошибка со следующим сообщением:
javax.faces.view.facelets.TagException: /WEB-INF/lib/tags.jar/META-INF/resources/components/newcomponents/table.xhtml @29,65 <w:export> /D:/demo/target/demo-web.war/WEB-INF/lib/tags.jar/META-INF/components/export.xhtml
at com.sun.faces.facelets.tag.UserTagHandler.apply(UserTagHandler.java:145)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:161)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:203)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:135)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:96)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:161)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:203)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:135)
at com.sun.faces.facelets.tag.jsf.core.FacetHandler.apply(FacetHandler.java:105)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:96)
Теги фактически определены в другом повторно используемом фляге за пределами приложения, которым я на данный момент занимаюсьработа над. Баночка имеет следующую структуру:
| META-INF
| + resources
| | + components
| | | + newcomponents
| | | | table.xhtml
| | | | export.xhtml
| |
| w_components.taglib.xml
| web-fragment.xml
|
Соответствующий код для <w:export>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:p="http://primefaces.org/ui"
xmlns:pe="http://primefaces.org/ui/extensions"
>
<composite:interface name="export" displayName="Wraps primefaces dataExport">
...
<composite:implementation>
<p:panelGrid ..>
<p:panel ...>
<f:facet name="header">
<h:outputLabel ..."/>
</f:facet>
<p:panelGrid ...>
<p:commandLink ...>
<p:dataExporter.../>
</p:commandLink>
...
Соответствующий код для <w:table>
определение:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:w="http://org.custom/components">
...
<composite:interface name="dataTable" displayName="Wraps primefaces dataTable">
<composite:implementation>
<h:panelGrid ...>
<p:dataTable...>
<f:facet name="header">
...
<w:export .../>
</facet>
</p:dataTable>
...
Соответствующее содержимоедля w_components.taglib.xml
...
<facelet-taglib>
<namespace>http://org.custom/components</namespace>
<tag>
<tag-name>table</tag-name>
<source>components/newcomponents/table.xhtml</source>
</tag>
<tag>
<tag-name>export</tag-name>
<source>components/export.xhtml</source>
</tag>
...
Это то, что я имею в отношении lib lib внутри web-fragment.xml
...
<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>/WEB-INF/w_components.taglib.xml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/w_components.taglib.xml</param-value>
</context-param>
...
Я считаю, что мне не хватает ссылок на один компонент на другой, но я просто не могу его найти. Кроме того, ошибка, о которой сообщают, не очень помогает.
ОБНОВЛЕНИЕ Как оказалось, я действительно все перепутал. С Когда использовать, файлы тегов, составные компоненты и / или пользовательские компоненты? Я понимаю (я думаю), что у меня есть НАСТОЯЩИЕ определения составных компонентов, но я был, без всякой причины, также включал ТАКЖЕ определение библиотеки тегов для тех же определений (Я думаю, я думал, что размещение определений CC внутри папки ресурсов было недостаточно). Я удалил определение тега, и CC работает.