componenti e gli attributi Facelets personalizzati definiti in taglib
-
25-09-2019 - |
Domanda
La definizione di componenti personalizzati in Facelets è facile e veloce, ma c'è una cosa che non riesco a capire.
E 'possibile con Facelets per definire quali attributi mia componente personalizzato ha? Vale a dire: Ho creato un componente che viene utilizzato in tal modo un:
<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 può quindi controllare la mia sintassi né può suggerire gli attributi, mentre sto scrivendo.
non riesco a trovare nulla su questo argomento nella documentazione Facelets. Pensato di poter aiutare. Grazie!
Soluzione
Sembra che non ci sia un modo. Ma anche se ci fosse, non credo che Eclipse (per esempio) sarebbe in grado di gestirlo e offerta di completamento automatico. È per questo che si può definire un .tld
, che contengono 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.
Altri suggerimenti
Non vedo l'ora di essere in grado di creare componenti compositi utilizzando JSF 2 e Facelets; da quello che ho letto, sembra molto semplice e veloce, e si definiscono gli attributi che il componente composito accetta.
Non so circa 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>