在Maven项目中实现JSF复合组件

在Maven项目中实现JSF复合组件,jsf,maven,composite-component,Jsf,Maven,Composite Component,人们似乎能够在SWF2.3.1中实现复合组件,但我找不到一个明确的参考来说明如何实现。我遵循了JSF复合组件的基本结构,但我的SWF应用程序似乎不识别taglib名称空间 有一个toolkit/IDE警告,但更重要的是浏览器中有一个运行时警告,JSF在屏幕上向用户显示以下警告: Warning: This page calls for XML namespace http://java.sun.com/jsf/composite/myjsf declared with prefix mj but

人们似乎能够在SWF2.3.1中实现复合组件,但我找不到一个明确的参考来说明如何实现。我遵循了JSF复合组件的基本结构,但我的SWF应用程序似乎不识别taglib名称空间

有一个toolkit/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/main/resources/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>

#{cc.attrs.attr});
在给定的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>

文件夹
src/main/resources/myjsf/
不适合您的复合组件。maven项目中的复合组件应该在
src/main/webapp/resources/
中,在您的例子中,它应该是
src/main/webapp/resources/myjsf/testComponent.xhtml


在使用Maven时,您应该知道,
webapp
folder是一个文件夹,其内容将部署在应用程序的根文件夹中,因此,它在某种程度上类似于Eclipse中标准动态web项目中的
WebContent
文件夹。

文件夹
src/main/resources/myjsf/
不适合您的复合组件。maven项目中的复合组件应该在
src/main/webapp/resources/
中,在您的例子中,它应该是
src/main/webapp/resources/myjsf/testComponent.xhtml


在使用Maven时,您应该知道,
webapp
文件夹是一个文件夹,其内容将部署在应用程序的根文件夹中,因此它在某种程度上类似于Eclipse中标准动态web项目中的
WebContent
文件夹。

这似乎是一个工具包(IDE/compiler/etc)警告,而不是运行时警告。当您实际运行代码时会发生什么?可以肯定的是,有些工具并不像它们假装的那么聪明。对不起,我应该说得更清楚一些。是的,有一个工具箱警告,但我在这里发布的实际警告是在运行时在浏览器中。如果您使用Eclipse/STS,您的“资源”文件夹应该在WebContent文件夹下。@rootkit,这是答案吗?我不知道我理解WebContent文件夹是什么。该项目在eclipse中被配置为maven项目。在我的maven/Spring/faceted eclipse项目中,我在项目根目录下有WebContent文件夹,这是WEB-INF等所在的位置。尝试将资源文件夹移到那里。这似乎是一个工具箱(IDE/compiler/etc)警告,而不是运行时警告。当您实际运行代码时会发生什么?可以肯定的是,有些工具并不像它们假装的那么聪明。对不起,我应该说得更清楚一些。是的,有一个工具箱警告,但我在这里发布的实际警告是在运行时在浏览器中。如果您使用Eclipse/STS,您的“资源”文件夹应该在WebContent文件夹下。@rootkit,这是答案吗?我不知道我理解WebContent文件夹是什么。该项目在eclipse中被配置为maven项目。在我的maven/Spring/faceted eclipse项目中,我在项目根目录下有WebContent文件夹,这是WEB-INF等所在的位置。尝试将您的资源文件夹移动到那里。