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

Servlets/JSP Java Discussion :

Problème pour affecter une valeur dans une JSP


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 219
    Points : 74
    Points
    74
    Par défaut Problème pour affecter une valeur dans une JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type="text/javascript">
    function  myFunction()
    {  
    	var valeurScript = document.getElementById("versionSelect").value;
    	<%String valeurJava= %> = valeurScript ;
    	<% request.setAttribute("theSelection",valeurJava);%>
     
    }

    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) 14:49:35,197 ERROR [http-/0.0.0.0:8080-2][render_portlet_jsp:157] org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP:
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2)
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) Une erreur s'est produite à la ligne: 12 dans le fichier jsp: /WEB-INF/jsp/configuration.jsp
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) Type mismatch: cannot convert from void to String
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) 9:
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) 10: var valeurScript = document.getElementById("versionSelect").value;
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) 11:
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) 12: <%String valeurImportante= %> = valeurScript ;
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) 13: <% request.setAttribute("theSelection",valeurImportante);%>
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) 14:
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) 15: }
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2)
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2)
    14:49:35,198 INFO [stdout] (http-/0.0.0.0:8080-2) Stacktrace:
    .
    Alors, je ne pense pas être loin de la vérité : est-ce qu'il y a une personne qui pourrait m'aider. Merci.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu ne peux pas procéder comme ça : le javascript s'exécute sur le client et le code de la jsp sur le serveur. On est dans deux mondes différents, comme 2 dimensions parallèles (dans l'espace et le temps) qui s'ignorent : enfin, pas complètement, parce que le code de la jsp peut générer le code javascript. Mais on ne peut pas récupérer le résultat d'un traitement javascript ultérieur et qui se fera sur une autre machine et une autre application (le navigateur) au moment où on génère le javascript.

    Il faut que ta jsp génère un code javascript qui modifie la session depuis le client en javascript exclusivement. Et là on est plus dans le domaine du Java, mais du JavaScript, que je connais que superficiellement (donc je ne parlerais pas des idées que j'essayerais pour éviter de dire des inepties). Mais on doit pouvoir trouver rapidement ça sur le net, ou en posant la question sur le forum javascript.

    A voir tout de même du coté des form si ce n'est pas simplement un form que tu as à soumettre...

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 26
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Comme joel.drigo l'a dèjà dit, tu ne peux pas affecter une valeur Javascript à une variable Java de cette façon.
    Le code Java (JSP) est déjà éxécuté au moment ou il apparait dans la page ou tu essaies d'éxécuter du javascript (d'ou l'érreur).

    Pour envoyer une valeur js au serveur il faut que tu fasses une requete HTTP (GET, POST.. form, AJAX) et puis que tu traites le résultat au niveau du Servlet Java.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 219
    Points : 74
    Points
    74
    Par défaut
    rebonjour a tous, je l'aurai bien ajouter dans l'url mais je suis dans un portlet et c'est le portlet qui genere un renderURL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <portlet:renderURL var="getVersionSelectUrl">
    	<portlet:param name="action" value="getVersionSelectAction" />
    </portlet:renderURL>
    maintenant j'essaie avec une valeur input hidden pas plus de succes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function  myFunction()
    {  
    	var valeurScript = document.getElementById("versionSelect").value;
    	alert(valeurScript);
    	document.getElementById("hiddenField").value=valeurScript;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <input type="hidden" id="hiddenField"/>
    <select  id="versionSelect" class="version" onchange="myFunction();window.location='${getVersionSelectUrl}'">
    						<c:forEach items="${listVersion}" var="versionIterator"  >
    							<option value="${versionIterator.value}"${versionIterator.seledted? 'selected="selected"': ''}>${versionIterator.label}</option>				
    						</c:forEach>
    					</select>
    j en perd du temps avec ca. ESt ce qu'il une a pourrait me mettre dans le droit chercher merci d avance.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Tu peux définir "pas plus de succès"? Déjà, pour ce que je vois de ton code, lorsqu'on change la valeur de select, tu appelle ta fonction javascript, qui elle même change un champ hidden qui... ne sert à rien car immédiatement après tu demande au navigateur d'aller voir ailleurs via le windows.location=...


    Je crois que tu a besoin de revoir les bases du fonctionnement du html, ce n'est pas comme ça qu'on soumet un formulaire ou que l'on passe des arguments à un serveur.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 12h17
  2. Réponses: 2
    Dernier message: 10/04/2008, 12h48
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48
  4. affecter la valeur d'une requete dans une variable (VB6)
    Par josémaria dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/03/2007, 15h19
  5. Réponses: 4
    Dernier message: 09/06/2006, 08h38

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