IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Facelets et JavaScript


Sujet :

JSF Java

  1. #1
    sup
    sup est déconnecté
    Membre confirmé Avatar de sup
    Profil pro
    Inscrit en
    Août 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 70
    Par défaut Facelets et JavaScript
    Désolé de remettre ca mais les Facelets cachent des subtilitées que je ne maitrise vraiment pas.

    Je ne parviens pas à insérer du JavaScript dans mes pages

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     
     
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:a4j="http://richfaces.org/a4j"
    	xmlns:rich="http://richfaces.org/rich"
    	xmlns:t="http://myfaces.apache.org/tomahawk"
    	template="/site/template.xhtml">
     
    <script type="text/javascript">
    function wait() {
    document.getElementById('content:searchImage').style.visibility = "visible";
    document.getElementById('content:displayAll').style.visibility = "hidden";
    }
    function wait2() {
    document.getElementById('content:searchImage2').style.visibility = "visible";
    document.getElementById('content:searchButton').disabled = true;
    }
    </script>

    Le HTML généré est le suivant :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script type="text/javascript" language="Javascript">
    //<![CDATA[
    function dpf(f) {var adp = f.adp;if (adp != null) {for (var i = 0;i < adp.length;i++) {f.removeChild(adp[i]);}}};function apf(f, pvp) {var adp = new Array();f.adp = adp;var ps = pvp.split(',');for (var i = 0,ii = 0;i < ps.length;i++,ii++) {var p = document.createElement("input");p.type = "hidden";p.name = ps[i];p.value = ps[i + 1];f.appendChild(p);adp[ii] = p;i += 1;}};function jsfcljs(f, pvp, t) {apf(f, pvp);if (t) {f.target = t;}f.submit();dpf(f);};
    //]]>
    </script>

    Il n'y a aucune trace de mes focntions, j'ai bien essayé de les mettre mes dans
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //<![CDATA[
    //]]>
    mais ca ne change rien


    Comment faire svp?

    Merci

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.
    Apparemment, tu as mal saisi le fonctionnement de Facelets: tout ce qui n'est pas défini entre <ui:define> dans la page cliente est perdu, ce qui inclut entre autres ton code JS.

    La solution serait de créer un espace pour cet effet dans la page template (du genre <ui:insert name="script">) et de définir ça dans la page client (<ui:define name="script">).

    Bonne chance.

  3. #3
    sup
    sup est déconnecté
    Membre confirmé Avatar de sup
    Profil pro
    Inscrit en
    Août 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 70
    Par défaut
    Si je comprend bien, ca devrait donner quelque chose dans ce genre?

    Template :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <head>
    	<title>
    		<ui:insert name="titre" />
    	</title>
    <ui:insert name="script" />	
     
    	</head>
    Page client :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <ui:define name="titre">contact Search</ui:define>
     
    <ui:define name="script">
    	<script type="text/javascript">
    		//<![CDATA[ 
    function wait() {
    document.getElementById('content:searchImage').style.visibility = "visible";
    }
    function wait2() {
    document.getElementById('content:searchImage2').style.visibility = "visible";
    }
    		//]]>
    	</script>
    </ui:define>

    Ca parait logique mais aucun javascript n'est généré
    et le template lui n'apprecie pas l' <ui:insert> dans la balise <script>

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Oui, normalement c'est ça.
    Tu peux essayer de déclarer la balise script dans le template ?

  5. #5
    sup
    sup est déconnecté
    Membre confirmé Avatar de sup
    Profil pro
    Inscrit en
    Août 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 70
    Par défaut
    Sur Firefox ca ne fonctionne tjs pas, la page rendue est du type

    <script type="text/javascript">
    //<![CDATA[


    //]]>

    </script>

    Par contre ca fonctionne très bien sur IE 7.0 et Opera 9.25

    template :
    <script type="text/javascript" language="javascript">
    <ui:insert name="script" />
    </script>


    page client :
    <ui:define name="script">
    function wait() {
    document.getElementById('content:searchImage').style.visibility = "visible";
    }
    </ui:define>

    Mais je ne peux pas negliger Firefox

  6. #6
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.
    Ton problème vient du <![CDATA[[ ...
    Essaies de l'enlever, et refais le test. Ici, sans le CDATA, ça fonctionne avec Firefox 2, et mieux encore, Facelets génère tout seul la balise CDATA.

    Bonne chance.

  7. #7
    sup
    sup est déconnecté
    Membre confirmé Avatar de sup
    Profil pro
    Inscrit en
    Août 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 70
    Par défaut
    Oui c'était bien ca, j'ai retiré du web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <context-param>
    <param-name>use-cdata</param-name>
    <param-value>true</param-value>
    </context-param>
    J'ai vidé le cache de JBoss et voila, ca marche avec IE, Firefox, Opera (mais pas sur Safari faut pas exagérer non plus lol)

    Merci beaucoup

  8. #8
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Ok. Content que ça a marché.
    Maintenant, tu n'oublies pas un truc par hazard ? ...
    Un petit indice:

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les meilleurs livres pour apprendre le JavaScript
    Par vermine dans le forum Livres
    Réponses: 23
    Dernier message: 10/06/2019, 18h58
  2. Pb de javascript et css avec les facelets
    Par kam81 dans le forum JSF
    Réponses: 2
    Dernier message: 08/06/2009, 23h14
  3. JavaScript<---->ActionScript
    Par crazypiou dans le forum Flash
    Réponses: 21
    Dernier message: 17/04/2009, 17h14
  4. appel xmlservice via fonction javascript
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 06/05/2003, 14h24
  5. JavaScript de vérification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/02/2003, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo