Реализация составного компонента JSF в проекте Maven

Кажется, что люди могут реализовать составные компоненты в SWF 2.3.1, но я не могу найти четкой ссылки на то, как это делается. Я следовал базовой структуре составного компонента JSF, но мое приложение SWF, похоже, не распознает пространство имен taglib.

Существует предупреждение инструментария / IDE, но, что более важно, в браузере отображается предупреждение во время выполнения, JSF отображает следующее предупреждение на экране для пользователя:

Warning: This page calls for XML namespace http://java.sun.com/jsf/composite/myjsf declared with prefix mj but no taglibrary exists for that namespace.

Определение компонента:

SRC / основные / ресурсы / myjsf / testComponent.xhtml:

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

<composite:interface>
    <composite:attribute name="attr" />
</composite:interface>
<composite:implementation>

#{cc.attrs.attr});          

</composite:implementation>
</html>

Ссылка в данном xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:mj="http://java.sun.com/jsf/composite/myjsf">

  <!-- snip -->

  <mj:testComponent attr="x" />

</ui:composition>

person Rich    schedule 22.02.2013    source источник
comment
Похоже, это предупреждение инструментария (IDE / компилятора / и т. Д.), А не предупреждение времени выполнения. Что происходит, когда вы действительно запускаете код? Просто чтобы быть уверенным, поскольку некоторые инструменты не так умны, как кажутся.   -  person BalusC    schedule 22.02.2013
comment
Извините, я должен был быть более ясным. Да, есть предупреждение набора инструментов, но на самом деле предупреждение, которое я разместил здесь, находится во время выполнения в браузере.   -  person Rich    schedule 22.02.2013
comment
Если вы используете Eclipse / STS, ваша папка «ресурсы» должна находиться в папке WebContent.   -  person rootkit    schedule 22.02.2013
comment
@rootkit, это ответ? Не знаю, понимаю, что такое папка WebContent. Проект настроен как проект maven в eclipse.   -  person Rich    schedule 22.02.2013
comment
В моем проекте Maven / Spring / Faceted Eclipse у меня есть папка WebContent непосредственно в корне проекта - здесь находится WEB-INF и т. Д. Попробуйте переместить туда папку с ресурсами.   -  person rootkit    schedule 22.02.2013
comment
Хм, кажется слишком специфичным для конфигурации, просто WebContent мне не подходит. Я пробовал дерево каталогов myjsf в WEB-INF / classes (это то место, откуда наш путь к классам обычно разрешается в этом проекте). Также в src / main / webapp. Думаю, ваше предложение больше всего похоже на создание WEB-INF / resources, а затем подключение к нему дерева myjsf. Это только то, как у вас настроены ресурсы в вашем проекте, или вы также использовали это для доступа к библиотеке таблиц для определенных составных компонентов jsf в вашем проекте?   -  person Rich    schedule 22.02.2013
comment
WebContent - это папка, содержащая все развернутые веб-ресурсы. Это имя папки по умолчанию при создании стандартного (не Mavenized) динамического веб-проекта в Eclipse. Это именно та папка, которая, в свою очередь, содержит папку /WEB-INF. Таким образом, в основном ресурсы композитов (и JS / CSS / изображений) должны находиться в папке /resources WebContent (таким образом, эта папка оказывается на том же уровне, что и папка /WEB-INF). Они вообще не должны попадать в путь к классам, как ресурсы Java.   -  person BalusC    schedule 22.02.2013
comment
Хорошо, это, безусловно, проясняет мне настройку, спасибо. Мы не использовали Dynamic Web Project, есть на что посмотреть. Но теперь я понимаю отображение WebContent в чистой настройке maven, которая относится к src / main / webapp   -  person Rich    schedule 22.02.2013


Ответы (1)


Папка src/main/resources/myjsf/ не подходит для вашего составного компонента. Составной компонент в проектах maven должен быть в src/main/webapp/resources/, а в вашем случае это должно быть src/main/webapp/resources/myjsf/testComponent.xhtml.

Поскольку вы используете Maven, вы должны знать, что папка webapp - это папка, содержимое которой будет развернуто в корневой папке вашего приложения, и поэтому она в некотором роде аналогична папке WebContent в стандартном динамическом веб-проекте в Eclipse.

person partlov    schedule 22.02.2013