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

Struts 1 Java Discussion :

interpretation des scriptlets Java en javascript + Struts


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut interpretation des scriptlets Java en javascript + Struts
    Bonjour à tous, dans le cadre d'une application dans le milieu industriel, nous nous devons d'effectuer des contrôle javascript avant que des connexions GPRS soient effectuées...

    Dans ces contrôles, nous sommes amenés à afficher des messages à coup de "alert(...);"


    Vu que nous gérons l'internationalisation de l'application via les resource properties, voici le genre de code que l'on retrouve dans mon code JS


    alert('<bean:message key="oneKey"');
    Ce qui a pour effet d'afficher "une clé"

    Maintenant dans le cadre d'un refactoring, on se demandait si on pouvait externaliser le code JS hors de la page JSP et le mettre dans un fichier JS.

    Le problème c'est que IL (je sais pas qui) n'interprete plus le <bean:message
    et donc je me retrouve avec des pop-up dont le message est "<bean:message key="oneKey" /> ===> ce qui ne me convient pas vraiment



    Voilà si quelqu'un à une idée pour palier ce problème je suis preneur...


    Merci d'avance
    Olivier

  2. #2
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut
    mmmh,
    cette fonction du js qui lance le alert est dépendant de la page JSP. Est-ce vraiment nécessaire de la sortir de la page vue que ce sera sinon ton jsp + ton js que tu devras générer côté serveur ?
    N'est-il pas simplement possible de la garder dans la JSP ?

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu peux externaliser le code javascript dans un fichier .js, il faudrait modifier les alert("le message...") par des alert(ID_MESSAGE_1) et ne charger dans la page que les messages ou faire un include d'une page jsp qui contiendrait ce code
    Dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    <head>
    <script type="text/javascript">
    var ID_MESSAGE_1 = "<bean:message key="..."/>";
    var ID_MESSAGE_2 = "<bean:message key="..."/>";
    ...
    </script>
    <script type="text/javascript" src="..."></script>

    Tu peux aussi utiliser AJAX dans ta bibliothèque de script pour charger les définitions de message...
    Bref, tu as le choix...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    Merci pour ces idées, je vais regarder un peu les différentes solutions qui s'opposent à moi et ensuite je choisirai la meilleure

    Merci à vous
    et à bientôt

    Olivier

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    autre solution :
    tu renommes tes fichiers javascript "monfichier.js" en "monfichier.js.jsp" et dans la jsp, tu appelles le fichier "monfichier.js.jsp"... car il faut laisser à l'interpréteur Java le soin de d'interpréter le code Java... avant de l'envoyer au client (qui recevra alors un flux javascript normal).
    Normalement, tu devrais avoir que les 2 fichiers suivants soient identiques :
    http://127.0.0.1:8080/monAppli/js/monfichier.js
    http://127.0.0.1:8080/monAppli/js/monfichier.js.jsp

    Matthieu

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    Merci encore pour cette idée, au début j'avais retenu l'idée de OButterlin mais cela ne fonctionne pas car les messages ne sont pas interprétés

    En ce qui concerne l'idée de mattheox, je ne comprend pas tout:
    je dois avoir en tout

    1 Jsp + (1Jsp + 1Js )

    la premiere étant ma page qui inclut une autre page dans laquelle il y a la balise <script src="..."></script>

    => d'où de toute façon la question, comment inclurte une page dans uen autre ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    Voilà,

    j'ai trouvé une solution. Je sais pas si elle est correcte au niveau de l'esthétique mais bon je la psote pour les suivants

    dans ma page JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <head>
       <%@ include file="javascript/afzet.js.jsp" %>		 
    </head>
    et dans le fichier afzet.js.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <script>
        //Mettre tout son code javascript avec les <bean:message key="..." />
    </script>

    Voilà
    Voilà
    Merci à vous tous de m'avoir mis sur la bonen voie

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Avant :
    Tu as une jsp majsp.jsp que tu appelles http://.../jsp/majsp.jsp
    dans cette jsp, tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="../js/monfichier.js"/>
    Tu as ton fichier javascript "monfichier.js" avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var ID_MESSAGE_1 = "<bean:message key="..."/>";
    var ID_MESSAGE_2 = "<bean:message key="..."/>";
    ...
    Mais le code JSP n'est pas interprété par le serveur d'application (il n'interprète que les fichiers d'extension .jsp)

    Avec ma proposition :
    dans la jsp "majsp.jsp", tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="../js/monfichier.js.jsp"/>
    tu renommes le fichier "monfichier.js" en "monfichier.js.jsp" (le fichier monfichier.js ne doit plus exister)...
    ainsi quand le navigateur du client va lire le code HTML <script src=".."/>, il va faire une requête sur le serveur d'application pour obtenir le contenu du fichier monfichier.js.jsp, comme il s'agit d'un fichier avec l'extension ".jsp", ce fichier va être interprété par le serveur d'application, et il va valorisé les bean:message en fonction du ApplicationRessources.properties et il va renvoyer un flux TEXTE (ici du javascript) que le navigateur client pourra interprété comme étant du javascript.

    au final : tu as 2 jsp : la jsp initiale et la jsp qui représente le fichier javascript!

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Citation Envoyé par omlip
    Voilà,

    j'ai trouvé une solution. Je sais pas si elle est correcte au niveau de l'esthétique mais bon je la psote pour les suivants

    dans ma page JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <head>
       <%@ include file="javascript/afzet.js.jsp" %>		 
    </head>
    et dans le fichier afzet.js.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <script>
        //Mettre tout son code javascript avec les <bean:message key="..." />
    </script>

    Voilà
    Voilà
    Merci à vous tous de m'avoir mis sur la bonen voie
    Pour information, avec ta méthode, tu n'a pas externalisé tes messages dans un fichier javascript, car l'include se fait au niveau du serveur.... tu n'as fais que déporter les messages dans un autre fichier; ton fichier afzet.js.jsp n'est en rien un fichier javascript : seul le serveur le lit ;-)
    en utilisant la méthode que je défini précédemment, tu utilises la balise <script src=""/>, donc le code javascript n'est pas inclus dans la page HTML mais déporté dans un autre fichier, ce qui fait que tu allèges le code HTML (pour peu que les messages soient déjà dans le cache de ton navigateur).

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    merci de ton éclaircissement mais avec ta methode je ne parviens toujours pas avoir mes message interprétés

    j'ai donc ma Jsp avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script src="javascript/afzet.js.jsp"></script>
    et dans ce fichier JSP, j'ai du texte brut qui sont en réalité mes fonctions js

    Dois-je rajouter quelque chose dans mon fichier afzet.js.jsp ?

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    peux-tu donner le code de ton fichier javascript jspisé (afzet.js.jsp)?
    que se passe-t-il quand tu appelles manuellement ton fichier js jspisé :
    http://...:8080/monAppli/javascript/afzet.js.jsp ?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    quan j'y fait appel,

    je vois le contenu en brut de mon fichier jsp , donc en réalité mes fonctions JS et là par contre la page est interprétée et donc mes messages sont corrects

    Code : 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
     
    function goback(){
    	window.location="prepareView.do";
    }	 
    function goto(urlforward){
    	window.location=urlforward;
    }
    function submit(){
    	document.wagenListForm.submit();
    }
    function determineAction(bedieningaction){
    	document.wagenListForm.bedieningaction.value=bedieningaction;
    	submit();
    }
     
    function onDisplaySort(isAkWithWs){
     
    	if(isAkWithWs){
    		var ws = document.wagenListForm.ws.value;
    		if(ws.length == 3){
    			alert('<bean:message key="function.notenabled"/>');
    			return;
    		}
    	}	
    	determineAction('displaysort');
    }
    function onValidate(isAkWithWs){
    	//Si on travaille avec des WS
    	if(isAkWithWs){
    		var result = false;	
     
    		if(checkWs()){
    			result = checkSpoor();
    		}
    		if(!result){
    			return;
    		}		
    	}
    	determineAction('validate');
    }
    function checkSpoor(){
     
    	var doodA = document.wagenListForm.doodspoor[0].checked;
    	var doodZ = document.wagenListForm.doodspoor[1].checked;
    	var ws = document.wagenListForm.ws.value;
    	if(ws.length == 3){
    		if(!doodA && !doodZ){
    			alert('<bean:message key="vertrekkant.noselection"/>');
    			return false;
    		}
    	}
    	return true;
    }
    function checkWs(){
    	var ws = document.wagenListForm.ws.value;
    	if(ws == ''){
    		alert('<bean:message key="infrastructuurpunt.textfield.empty"/>');
    		return false;	
    	}
    	return true;
    }
     
    function onDelete(type,constWS){
     
    	//alert('type = '+type);
    	//alert('ws = '+constWS);
     
    	//constWS = Valeur de Ws dans la classe Constants
    	//Declaration variables
    	i = 0;
    	count = 0;
    	var array = new Array();
    	k=0;
    	//Tout ceci ne s'applique que si on est sur une voie reelle
    	if(type == constWS){
    		//Recherche des checkbox au sein du formulaire
    		while (i < document.wagenListForm.elements.length)
     		{
     			obj = document.wagenListForm.elements[i];
     			if(obj.type == "checkbox"){
     				count++;
     				array[k]=obj;
     				k++;
     			}
    			i++;
    		}
    		//Algorithme de selection des wagons			
    		j=0			
    		var alreadyFalse = false;
    		var indexFalse = -1;
    		while(j<count){
    			obj = array[j];	
    			if(obj.checked == false){
    				if(alreadyFalse){
    					if(j > index+1){
    						alert('<bean:message key="wagon.badselection"/>');
    						return;
    					}		
    				}else{
    					alreadyFalse = true;
    				}
    				index = j;				
    			}				
    			j++;
    		}
     
    	}
    	//enfin appel ? l'action qui va enlever les wagon de la liste		
    	determineAction('delete');
    }
    function select(param){
    	while (i < document.wagenListForm.elements.length){
    		obj = document.wagenListForm.elements[i];
    		if(obj.type == "checkbox"){
    			obj.checked = param;
    		}
    		i++;
    	}
    }
    function getWagens(){
     
    	var result = false;	
    	if(checkWs()){
    		result = checkSpoor();
    	}
    	if(result){
    		document.wagenListForm.bedieningaction.value='getWagens';
    	}
     
    	return result;
    }
     
    //uniquement si WS
    function checkSelectionRadio(){
     
    	var ws = document.wagenListForm.ws.value;
    	var reset = false;
    	var result=false;
     
    	if(!checkWs()){
    		reset = true;
    	}else if(ws.length == 2){
    		alert('Vous ne pouvez spécifier un coté pour cette voie');
    		reset = true;
    	}
     
    	if(reset){
    		document.wagenListForm.doodspoor[0].checked = false; //radio A
    		document.wagenListForm.doodspoor[1].checked = false; //radio Z
    		return;
    	}
    	//determineAction('getWagens');
    }

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Citation Envoyé par omlip
    quan j'y fait appel,
    je vois le contenu en brut de mon fichier jsp , donc en réalité mes fonctions JS et là par contre la page est interprétée et donc mes messages sont corrects
    donc, quand tu appelles manuellement le fichier javascript/afzet.js.jsp, tu obtiens un fichier js "normal" avec tes messages valorisés.
    Donc, ça doit marcher si dans la jsp, tu écris <script src="javascript/afzet.js.jsp"/> dans le header.
    Pense éventuellement à vider le cache de ton navigateur, ainsi que le cache de ton serveur d'application.
    si ça ne fonctionne pas... je ne sais pas... car l'instruction HTML <script src=".."/>, ça fait comme un GET sur le fichier src!
    tiens moi au courant
    Matthieu

Discussions similaires

  1. tag pour transfomer des objets java en objets javascript
    Par aminaoussaleh dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/12/2009, 18h34
  2. Appeler des méthodes Java dans javascript
    Par Kyo-AzN dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2008, 20h19
  3. Convertir une scriptlet JAVA via des tags JSP struts
    Par seb0634 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 16/09/2008, 15h00
  4. [POO] utilisation des packages Java en javascript
    Par developppez dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/05/2008, 11h08
  5. Inserer des classes java existantes
    Par 2000 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 20/03/2003, 12h35

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