2010-04-08 13 views
8

La définition de composants personnalisés dans Facelets est simple et rapide, mais il y a une chose que je ne peux pas comprendre.Composants facettés personnalisés et attributs définis dans taglib

Est-il possible avec Facelets de définir les attributs de mon composant personnalisé? -À-dire: Je l'ai créé un composant qui est utilisé de telle manière:

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

et est défini dans taglib.xml comme suit:

<!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 ne contient pas d'informations sur les attributs de composants (id, width, height, title) et IDE ne peut donc pas vérifier ma syntaxe ni suggérer des attributs pendant que je tape.

Je ne trouve rien à ce sujet dans la documentation de Facelets. Je pensais que tu pouvais aider. Merci!

Répondre

4

Il semble qu'il n'y a pas de chemin. Mais même s'il y en avait, je ne pense pas qu'Eclipse (par exemple) serait capable de le gérer et d'offrir la saisie semi-automatique. Voilà pourquoi vous pouvez définir un .tld, contenant les attributs:

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

Juste pour le plaisir de saisie semi-automatique. Laid, je sais.

0

Je suis impatient de pouvoir créer des composants composites en utilisant JSF 2 et facelets; d'après ce que j'ai lu, cela semble très rapide et facile, et vous définissez les attributs que votre composant composite accepte.

0

Je ne sais pas avant, mais c'est possible maintenant. Il suffit d'ajouter:

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