2013-02-22 63 views
0

看起来人们能够在SWF 2.3.1中实现复合组件,但我无法找到如何完成的明确参考。我遵循JSF复合组件的基本结构,但是我的SWF应用程序似乎无法识别taglib命名空间。在Maven项目中实现JSF复合组件

有一个工具/ 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> 
+1

这似乎是一个工具包(IDE /编译器/等)的警告,而不是一个运行时的警告。当你真正运行代码时会发生什么?只是为了确保一些工具不像他们假装的那么聪明。 – BalusC 2013-02-22 15:56:26

+0

对不起,我应该更清楚。是的,有一个工具包警告,但我在这里发布的实际警告是在运行时在浏览器中。 – Rich 2013-02-22 18:11:29

+0

如果您使用的是Eclipse/STS,您的'资源'文件夹应位于WebContent文件夹下。 – rootkit 2013-02-22 18:16:23

回答

5

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

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