2013-02-22 65 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文件夾類似。