Wie Sie gesagt haben, ist das Attribut jsfc
im Wesentlichen nützlich, wenn Sie einen HTML-Prototyp zu einer JSF-Seite "konvertieren" müssen. Zum Beispiel, wenn Sie einen HTML-Eingabetext haben:
<input type="text" .../>
können Sie das jsfc
Attribut hinzufügen, um diese HTML-Komponente in eine JSF-Komponente zu konvertieren:
<input type="text" jsfc="h:inputText" .../>
Dies entspricht Schreiben des folgenden JSF Code:
<h:inputText .../>
Wie in der Facelets Dokumentation angegeben here oder here, das Attribut jsfc
kann auch verwendet werden, um Facelets-Komponenten zu "mappen". Zum Beispiel können Sie einen Teil des HTML-Codes entfernen:
<span jsfc="ui:remove">
This won't be compiled either <h:outputText value="#{foo.bar}"/>
</span>
Sie auch eine Tabelle mit diesem Attribut erstellen:
<table>
<tr jsfc="ui:repeat" value="#{dept.employees}" var="emp" class="#{emp.manager ? 'mngr' : 'peon'}">
<td>#{emp.lastName}</td>
<td>#{emp.firstName}</td>
</tr>
</table>
In diesem Beispiel verknüpfe wir nicht diese Tabelle ein h:datatable
Komponente, aber wir erstellen eine Tabelle mit HTML-Code und verwenden die JSF-Komponente ui:repeat
, um Zeilen zu iterieren.
Wie Sie sehen können, kann das Attribut jsfc
verwendet werden, um eine HTML-Komponente in eine JSF-Komponente in einer JSF-Seite zu konvertieren. Bei komplexen Komponenten wie der Datentabelle müssen Sie daher einige Problemumgehungen verwenden (mit ui:repeat
anstelle der Komponente h:datatable
).
Ein weiterer Punkt ist, dass Sie keine Drittbibliotheken-Komponenten wie die von RichFaces, IceFaces, Tomahawk und so weiter verwenden können. Und diese Bibliotheken sind wirklich eines der Interessen von JSF.
Also zusammenzufassen: jsfc
kann nützlich sein, um einen HTML-Prototyp in eine JSF-Anwendungen, im Wesentlichen für die Erstellung von Proof of Concepts oder das Design der allgemeinen Benutzeroberfläche zu verwandeln. Ich denke jedoch, es ist besser, diese Komponente zu vermeiden, sobald die "echte" Entwicklung beginnt ...
Nun ...eigentlich habe ich gerade das jsfc-Attribut mit einer Drittanbieter-Komponente getestet, und es hat gut funktioniert ... –