2010-04-08 79 views
8

在Facelets中定義自定義組件非常簡單快捷,但有一件事我無法弄清楚。在taglib中定義的自定義Facelets組件和屬性

是否有可能與Facelets的定義什麼屬性我的自定義組件有?即:我創建它以這樣的方式使用的組件:

<blue:modalWindow id="editFeesWizard" width="500" height="440" title="Wizard"> 

和taglib.xml定義如下:

<!DOCTYPE facelet-taglib PUBLIC 
     "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" 
     "http://java.sun.com/dtd/facelet-taglib_1_0.dtd"> 
<facelet-taglib> 
    <namespace>...</namespace> 
    <tag> 
     <tag-name>modalWindow</tag-name> 
     <source>components/modalWindow.xhtml</source> 
    </tag>  
</facelet-taglib> 

標籤庫不包含對組件的屬性的任何信息(id,width,height,title)和IDE不能檢查我的語法,也不能在我輸入時顯示屬性。

我在Facelets文檔中找不到關於此主題的任何內容。以爲你可以幫忙。謝謝!

回答

4

看來沒有辦法了。但即使有,我也不認爲Eclipse(例如)能夠處理它並提供自動完成功能。這就是爲什麼你可以定義一個.tld,包含屬性:

<?xml version="1.0" encoding="utf-8"?> 

<taglib 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1"> 
...... 
</taglib> 

只是爲了自動完成的緣故。醜,我知道。

0

我期待着能夠創建使用JSF 2和Facelets複合組件;從我讀過的內容來看,它看起來非常快速簡單,並且可以定義複合組件接受的屬性。

0

我不知道之前,但它現在是可能的。只需添加:

<tag> 
    <tag-name>mycustomtag</tag-name> 
    <source>tags/mycustomtag.xhtml</source> 
    <attribute> 
     <description>What does this do?!</description> 
     <name>attribute</name> 
    </attribute> 
</tag>