Changement source iframe en un clic avec javaScript (j2ee)

Fermé
lallana2re Messages postés 19 Date d'inscription lundi 2 avril 2018 Statut Membre Dernière intervention 6 novembre 2020 - Modifié le 22 mai 2019 à 09:26
 Ottoman - 24 mai 2019 à 21:36
Salut tout le monde , j'ai eu un probleme concernant une page que je voudrai charger sur mon iframe apres un clic sur un lien . Par conséquent , tomcat génère une erreur --> "La ressource demandée n''est pas disponible."


*
                        • BALISE CONTENANT LE IFRAME **************


<[/contents/242-introduction-au-dynamic-html-dhtml div] class="menu">
 <form action="" method="get">
   
  <ul >
   <li><a href="#" onclick="acceuil()" >Acceuil</a></li>
   <li><a href="#" onclick="enchereEnCours()" >Encheres en cours</a></li>
   <li><a href="#" onclick="historiqueEnchere()" >Historique des encheres</a></li>
   <li><a href="#" onclick="produits()" >Produits</a></li>
   <li><a href="#" onclick="profil()" >Profil</a></li> 
   <li><a href="#" onclick="Apropos()" >A propos</a></li> 
  </ul>

 </form>
</div> 

<div>
 <form name="" action="" method="get" >
 
  <div class="screen" style="text-align : center ; border : 1 solid black ">    
  <iframe id="frame" src="#" width="90%" height="90%" style="margin:0%">
     <p>Your browser does not support iframes.</p>
  </iframe>
  </div>
  
 </form>
</div>



*
                        • LE CODE JAVA SCRIPT ****************



function acceuil(){
  document.getElementById("frame").src="/WEB-INF/VUES/login.jsp" ;
 }


**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
A voir également:

2 réponses

Salut,
euh Javascript (J2EE) vraiment?
Aucun rapport bien sûr J2EE est une 'extension' de Java. javaScript et Java sont vraiment différents et n'ont rien à voir!
Java est un langage compilé qui nécessite la JRE, JavaScript est un langage de script communément utilisé pour le web car il permet de manipuler le DOM, autrement dit la page HTML.

A moins que vous fassiez une applet(Java sur le web) pour un programme qui nécessite de grandes possibilités techniques rien à voir avec votre histoire.

Par contre renseignez vous sur le langage HTML car je ne vois pas l'intérêt de ceci:

<iframe id="frame" src="#" width="90%" height="90%" style="margin:0%">


En effet vous indiquez une iframe vide, autrement dit que vous avez une page chargée dans une autre(le fichier HTML) mais que celle-ci ne charge rien...

Mais quel rapport avec un serveur Apache?

" Par conséquent , tomcat génère une erreur --> "La ressource demandée n''est pas disponible." "

JavaScript fonctionnant sur le client(l'ordinateur de l'utilisateur) il n'a aucun rapport avec un srveur qui est fait pour du PHP!
Sinon il vous faudra utiliser AJAX qui signifie : Asynchronymous JavaScript And XML bien qu'XML ne sois pas obligé cela veut dire faire des appels asynchrones à un serveur et les utiliser.
Comme ce n'est pas indiqué dans votre question ou votre code on va s'en passer.

Si vous voulez changer le contenu (ici l'url de la source de la page à afficher dans l'iframe) vous pouvez faire cela en JavaScript. Bien sûr il faut déjà savoir comment ça marche en HTML avant d'avoir à modifier le dit HTML avec JavaScript ;)

Par exemple vous utilisez la balise form pour contenir une iframe... ça ne paraît pas vraiment cohérent:
Une iframe est une page externe, un balise form indique un formulaire et vous n'en avez pas. Une page externe a son propre formulaire(et sa propre balise form) donc et ne peut fonctionner autrement. En outre en ajoutant de la complexité (pour pas dire en écrivant n'importe comment votre HTML) vous exposez le traitement de votre formulaire(les données renvoyées par celui-ci pour peu que vous les indiquiez) à de grave problème de sécurité.
Pour faire simple ça ne marchera pas comme cela parce que ce n'est pas fait pour:
_commencez par une balise form correctement utilisée avec son contenu
_idem pour l'iframe qui n'indique rien et ne peut être reliés à un formulaire d'une autre page sans avoir à effectuer des opérations complexes autant qu'inutiles et sous-mises à des sécurités comme l'interdiction de scrips cross-browser(empêchant ainsi que les données puissent être récupérées par un tiers)

Une fois ceci renseignez vous sur JavaScript qui permet de modifier l'attribut src facilement comme ceci:

document.getElementById('frame').src=' nouvelle valeur de l'attribut';
//-- sans notation raccourcie s'écrit comme ceci

document.getElementById('frame').setAttribute('src', ' nouvelle valeur de l'attribut');
0
lallana2re Messages postés 19 Date d'inscription lundi 2 avril 2018 Statut Membre Dernière intervention 6 novembre 2020
24 mai 2019 à 00:23
Merci , Ottoman pour les réponses , j'en ai tiré beaucoup de choses .
Okk , je sais très bien que java et javascript sont totalement différents , je voulais juste être compris .
Premièrement ce qui m'a pousser à choisir le iframe , c'est que voulais que toutes mes pages , traitement , affichage se font en une seule page (notion de frameset et frame(HTML)) , malheureusement ça n'as pas marché .
Deuxièmement , peut être c'est pas une bonne pratique mais en html si vous mettez un seul formulaire pour toute la page , vous risquez d'être envoyer sur une seule servlet ( action = "nomServlet") n'importe lequel bouton appuyé se trouvant dedans . Imagine que tu aies deux servlets , respectivement TraitementConnexion.java ( module login ) et TraitementInscription.java ( module d'inscription) , maintenant comment pourrais tu les mettre dans un même formulaire ? sinon laquelle sera envoyée les donnée ?
ça ne marchais pas raison pour laquelle je crée un formulaire pour chaque servlet .
Pour le code javascript , chez moi ça marchais mais le problème en ai : au lieu de charger L’URL trouvant dans le script , après click , mais il charge la page principale dans le iframe donc absolument aucun changement constaté.
0
'je voulais juste être compris . ' alors pourquoi parlez de J2EE dans votre titre? Vous utilisez du HTML et du JS donc pas vraiment Java!

Quel rapport avec les servlet? Je parlais pas d'un formulaire qui prends toute la page mais d'un formulaire correctement écrit! La mise en page elle est indépendante du reste puisque c'est CSS(qui permet de donner les dimensions qu'on veux)

"vous risquez d'être envoyer sur une seule servlet ( action = "nomServlet") n'importe lequel bouton appuyé se trouvant dedans . "
Euh un formulaire HTML envoi des données, il faut donc les traiter et ce n'est pas le servlet qui fait ça mais un programme/script(à développer).
Pas n'importe quel bouton mais le bouton submit qui est unique, sinon il est assez simple d'inhiber soit le comportement par défaut soit de ne pas utiliser un input type= submit mais un input type = button.

Bref ce sont encore des questions de HTML qui n'ont aucun rapport avec le reste, la base qui doit être correcte et ce n'est pas le cas dans le code que vous montrez.

action = 'nom Servlet ' ah bon? Utilisez plutôt l'URL du fichier ça sera mieux!

Je ne comprends vraiment rien à ce que vous dites:
respectivement TraitementConnexion.java ( module login ) et TraitementInscription.java ( module d'inscription) ,
Vous parlez d'une applet Java donc rien à voir avec JavaScript ou du fonctionnement plus simple et rapide d'un formulaire HTML?
Dans les 2 cas les informations sont envoyées à un seul destinataire, ce que vous faites avec son traitement c'est autre chose... si on veut que ces informations persistent on peut les utiliser une base de donnés, si elles ont besoin d'être seulement affichée pour le client on peut utiliser JavaScript ou AJAX.
Servlet = java donc pas de servlet ici! C'est pourtant simple. Si vous utilisez Java vous n'utiliserez pas de HTML il me semble sauf pour inclure l'applet. Ou alors vous parlez d'un moteur X.L.S.T. ? mais bon ce n'est pas indiqué...

Je ne vois pas l'intérêt d'ailleurs de séparer le traitement de la connexion de celui de l'inscription, vous allez utiliser le même formulaire pour les 2? Rien n'empêche de faire la distinction dans le script alors, il suffit de regarder si l'utilisateur est enregistré (dans la BDD)ou non.
0
Pour être clair(et qu'on se comprenne ce qui semble difficile!)
"Deuxièmement , peut être c'est pas une bonne pratique mais en HTML si vous mettez un seul formulaire"

On met autant de formulaires qu'on veut dans une page web! Le problème c'est que votre formulaire est vide et contient une i f r a m e...donc on sort de la page et par extension du formulaire : ça ne peut pas fonctionner il faut remplir le(s) formulaire(s) avec des champs de saisie(input) et non avec une i f rame. Si les input sont dans une applet alors le formulaire sert strictement à rien.
Il me semblait que c'était clair et là vous détournez mes propos: je vous dit de mettre un formulaire correct vous pensez qu'il faut mettre un seul formulaire. Dans votre code il y a un seul formulaire. Si vous en voulez 1 ou 40 il faut les écrire...hors celui qui existe n'est pas correctement rempli, commencez par cela peut-être avant de voir les suivants.

Explication d'une page HTML : le DOM https://fr.wikipedia.org/wiki/Document_Object_Model

Considérez que chaque DOM(page) est un programme différent qui est(presque) incapable de communiquer avec les autres (pages car chaque page crée son DOM propre). Moi ça me paraît logique qu'un formulaire qui comme toutes les balises s'ouvre et se ferme dans la même page fonctionne sur la même page et pas sur des pages séparées et sans rapport entre elles...
0