2017-05-11 77 views
1

我創建了一個用於xhtml視圖的自定義組件,它使用Netbeans8.1和glassfish4.1在JSF 2.1中使用屬性值並打印它(如下面的代碼中的helloworld)。我通過擴展UIComponentBase重寫的家族創建了一個自定義組件,並通過擴展UIComponentELTag覆蓋componentType和rendererType方法來對開始和自定義組件標記類進行編碼。我爲它定義了一個標籤庫test.taglib.xml,並將其註冊到web.xml中。JSF2自定義組件問題

以下是查看代碼。

<?xml version='1.0' encoding='UTF-8' ?> 
 
<!DOCTYPE html> 
 
<html xmlns="http://www.w3.org/1999/xhtml" 
 
     xmlns:h="http://xmlns.jcp.org/jsf/html"> 
 
<h:body> 
 

 
    <h2>JSF Custom Input FacesComponent Example</h2> 
 
    <h:form> 
 
     <ui:composition 
 
        xmlns:custom="http://packt.net/cookbook/components" 
 
         xmlns:ui="http://java.sun.com/jsf/facelets"> 
 
      <custom:testInput helloworld="test component!!"/> 
 
     </ui:composition> 
 
    </h:form> 
 

 
</h:body> 
 
</html>

的問題是 - 它只是顯示HTML價值,不顯示自定義組件的屬性值。

同樣的例子適用於當我嘗試jsp視圖(與tld文件)。

我嘗試使用自定義組件標記直接或作爲用戶界面的組成部分,但沒有運氣。

我在自定義組件中放置了一個斷點,並試圖進行調試,但控制甚至沒有進入斷點。

由於控件不會出現斷點,所以這意味着我的自定義組件沒有被servlet註冊?如果是這樣,請告訴我我做錯了什麼。

我是JSF的新手,所以請告訴我,如果我錯過任何一點。

我試着與JSF2.2.7相同,但也表現出同樣的問題。

回答

0

我找不到根本原因,但解決了我的問題。我使用JSF 2.2.7 jar的代碼嘗試了相同的代碼,但是我使用了註釋。 正如問題所述,它沒有與2.2.7一起工作,是因爲我使用舊時尚代碼,如創建taglib並在部署描述符中更新它。