Javascript ne fonctionne pas sous JSF modèle
Je suis en utilisant JSF modèles et Primefaces.
Code Javascript ne semble pas être de travailler sous ui:composition de l'interface et de:définir des balises. Le code suivant n'est pas de frapper la chargé() la méthode. C'est le contenu.fichier xhtml
<h:head>
<script language="javascript">
function loaded() {
alert("Working!!");
}
</script>
</h:head>
<ui:composition template="/template/template.xhtml">
<ui:define name="content">
<h:body style="width:100%;height:100%;" onload="loaded()">
<p class="item">Random text</p>
</h:body>
</ui:define>
</ui:composition>
mais lorsque je retire la définir et de la composition des balises de la chargé de la fonction est appelée. Une idée de pourquoi ce qui se passe ?
Voici le fichier de modèle
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title><ui:insert name="title">Template</ui:insert></title>
</h:head>
<h:body>
<div id="header">
<ui:insert name="header">
<ui:include src="../menu.xhtml" />
</ui:insert>
</div>
<div id="content">
<ui:insert name="content">
<ui:include src="../content.xhtml" />
</ui:insert>
</div>
<div id="footer">
<ui:insert name="footer">
This is a footer
</ui:insert>
</div>
- Voir la différence dans le code HTML généré dans les deux cas
- Bonne idée 🙂 ... Viens de vérifier et il ressemble à la chargé() la méthode n'est pas ajouté à la sortie html.
Vous devez vous connecter pour publier un commentaire.
Tout à l'extérieur
<ui:composition>
est ignoré lors de la construction de la vue. Aussi, redeclaring<h:body>
une fois de plus est inutile. Pour utiliser un script qui s'exécute lors du chargement de la page, vaut mieux utiliser un<h:outputScript target="body">
. Cela va être déplacé à la fin de corps et donc être invoquée après le nécessaire des éléments du DOM HTML sont été construit. C'est aussi un peu plus rapide qu'unonload
.Tous avec tous, votre ensemble
content.xhtml
doit ressembler à ceci:Voir aussi:
Vous êtes de passage le "contenu" pour le modèle. Si votre modèle n'inclut pas de "contenu", il ne sera pas compris dans le HTML résultant.
Post le modèle.xhtml et voyons voir...