2010-04-08 11 views
8

Definieren von benutzerdefinierten Komponenten in Facelets ist einfach und schnell, aber es gibt eine Sache, die ich nicht herausfinden kann.In Taglib definierte benutzerdefinierte Facelets-Komponenten und -Attribute

Ist es mit Facelets möglich zu definieren, welche Attribute meine benutzerdefinierte Komponente hat? Dh: Ich habe eine Komponente geschaffen, die in einer solchen Art und Weise verwendet wird:

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

und wird in taglib.xml wie folgt definiert:

<!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> 

Taglib enthält keine Informationen über die Komponente Attribute (id, width, height, title) und die IDE kann daher weder meine Syntax überprüfen noch Attribute vorschlagen, während ich tippe.

Ich kann nichts zu diesem Thema in Facelets Dokumentation finden. Dachte, du könntest helfen. Vielen Dank!

Antwort

4

Es scheint, dass es keinen Weg gibt. Aber selbst wenn, wäre ich nicht der Meinung, dass Eclipse (zum Beispiel) in der Lage wäre, damit umzugehen und Autocomplete anzubieten. Aus diesem Grund können Sie eine .tld definieren, enthält die Attribute:

<?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> 

nur zum Zwecke der automatischen Vervollständigung. Hässlich, ich weiß.

0

Ich freue mich darauf, Composite-Komponenten mit JSF 2 und Facelets erstellen zu können; Nach dem, was ich gelesen habe, scheint es sehr schnell und einfach zu sein, und Sie definieren, welche Attribute Ihre Composite-Komponente akzeptiert.

0

Ich weiß nicht vorher, aber es ist jetzt möglich. Einfach hinzufügen:

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