Umfassen JS-Dateien in eine xhtml-Datei, die Sie zusammen mit ui:include
Werde ich ilustrate meine Frage mit einem Beispiel:
outerfile.xhtml:
<h:head>
<h:outputScript library="js" name="jquery-1.6.2.js" />
<h:outputScript library="js" name="outer.js" />
</h:head>
<h:body>
<h:panelGroup id="inner_panel">
<ui:include src="innerfile.xhtml" />
</h:panelGroup>
</h:body>
innerfile.xhtml:
<ui:composition ... >
<h:head>
<h:outputScript library="js" name="jquery-1.6.2.js" />
<h:outputScript library="js" name="inner.js" />
</h:head>
<h:body>
<h:panelGroup>
I Am Text in The Inner File!
</h:panelGroup>
</h:body>
</ui:composition>
Meine Fragen:
- Ist es okay, zu erklären, das
js
Dateien in der inneren Datei, wie ich es Tat? - Brauche ich (Und Sollte ich) erklären, der Häufig (
jquery-1.6.2.js
) wieder in die innere-Datei? - Was passiert, wenn ich un-Rendern und re-render
inner_panel
mit AJAX? Wird die innere-inklusive Header neu geladen werden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Sollten Sie nicht geben Sie die
<h:head>
in der include-als auch. Dies führt nur ungültig HTML. Als Sie jetzt haben wird das Ergebnis in:(Rechtsklick-Seite im browser und tun View Source zu sehen, es selbst, w3-Validierung falls erforderlich)
Beheben Sie diese entsprechend in
innerfile.xhtml
:Resultat gültiges HTML. Die Skripte erklärt
<h:outputScript target="head">
wird nur am Ende in der<head>
automatisch, wenn nicht bereits zuvor deklarierte. Wie im echten HTML, sollte es nur eine<h:head>
und<h:body>
im gesamten anzeigen, einschließlich aller Vorlagen und include-Dateien.Nicht, wenn die übergeordnete Datei nicht, hat es schon erklärt, wie
<h:outputScript>
. Aber redeclaring es in der include nicht Schaden. Es wird nicht dupliziert werden, jedenfalls, wenn es bereits erklärt wurde, vor.Funktioniert dies nur, wenn Sie nicht
target="head"
. Ob Sie neu geladen werden, von dem server, hängt davon ab, ob Sie schon von dem browser angefordert, bevor und bereits vorhanden und gültig in den browser-cache. Aber im Grunde, wird der browser sagte Sie erneut, um es zu laden, ja. Mit Firebug können Sie ganz einfach bestimmen.Den richtigen Weg zu schreiben, es ist target="head" in Ihrem h:outputScript Erklärung auf innerfile.xhtml:
In dieser Weise werden alle Ihre Ressourcen-Deklarationen werden innerhalb der äußeren . Mehrere Deklarationen mit dem gleichen Ressource mit der gleichen Bibliothek/Ressourcen-name wird nicht machen die gleiche Erklärung mehrere Male, weil der renderer für h:outputScript hat einige code, der erkennt, und ignorieren Sie die doppelten Einträge. Hinweis: die Dinge sind anders, wenn Sie machen ein h:outputScript, die nicht auf eine javascript-Datei.