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!

È stato utile?

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top