2010-04-08 19 views
8

La definizione di componenti personalizzati in Facelets è semplice e rapida, ma c'è una cosa che non riesco a capire.Componenti e attributi di Facelets personalizzati definiti in taglib

È possibile con Facelets definire quali attributi ha il mio componente personalizzato? Vale a dire: Ho creato un componente che viene utilizzato in modo tale:

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

ed è definito in taglib.xml come segue:

<!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 non contiene alcuna informazione sugli attributi del componente (id, larghezza, altezza, titolo) e IDE non possono quindi controllare la mia sintassi né suggerire attributi mentre sto digitando.

Non riesco a trovare nulla su questo argomento nella documentazione di Facelets. Pensavo che tu potessi aiutare. Grazie!

risposta

4

Sembra che non ci sia un modo. Ma anche se ci fosse, non credo che Eclipse (per esempio) sarebbe in grado di gestirlo e offrire il completamento automatico. Ecco perché è possibile definire una .tld, contenente gli attributi:

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

Solo per il gusto di completamento automatico. Brutto, lo so.

0

Non vedo l'ora di poter creare componenti compositi utilizzando JSF 2 e facelets; da quello che ho letto, sembra molto veloce e facile, e tu definisci quali attributi accetta il tuo componente composito.

0

Non so prima, ma è possibile ora. Basta aggiungere:

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