aide Spring boot /jquery /api

aide Spring boot /jquery /api - Java - Programmation

Marsh Posté le 30-01-2019 à 15:04:34    

Bonjour,
Je fais appel à vous pour une petite aide .
 
Je suis entrain de réaliser une interface en MVC avec spring. Mais completement debutant sur le sujet je galere un peu.
 
Pour faire court, j'ai une lib avec plein de fonctions d'api google que j'ai crée.  
Par exemple j'ai crée un controller pour faire appel à la fonction :  

Code :
  1. @RestController
  2. public class mainController {
  3.     @RequestMapping(value = "/index", method = RequestMethod.GET)
  4.     public String index(@RequestParam String inputParameter) throws IOException, GeneralSecurityException {
  5.         DriveQuickstart drive = new DriveQuickstart("c:/temp/credentials.json" );
  6.         String res = drive.checkFile(inputParameter);
  7.         return res;
  8.     }
  9. }


 
Dans ma vue, j'ai fait un petit form, ou je souhaite passer ma string dans l'inputparameter ( dans la method drive.checkfile(ma string)
 
ma vue :  

Code :
  1. <form method="post" action="/">
  2. <input type="text" id="query" placeholder="file to search ...">
  3. <input type="submit" id="submit" value="fetch!">
  4.     </form>
  5. </div>
  6. <script type="text/javascript">$.get("/index", null, function (data){
  7.     $('#result').html(data);
  8.     });</script>


 
avec le petit jquery pour afficher le résultat dans ma vue.
 
Ma question est simple, comment faire passer la string que j'ai rentre dans mon form dans le controller de ma method drive.checkfile( ici la string)
et l'afficher dans la vue.
Je ne sais pas si j'ai ete claire?
 
Merci pour votre aide.
Raphael

Reply

Marsh Posté le 30-01-2019 à 15:04:34   

Reply

Marsh Posté le 30-01-2019 à 15:18:14    

J'ai déjà eu ce problème. En fait, Javascript ne permet pas de passer de paramètre à une requête HTTP "GET". De ce fait, tu reçois null du côté Java.
 
Une solution serait de changer la méthode HTTP utilisée.

Reply

Marsh Posté le 30-01-2019 à 15:23:00    

Pour passer le paramètre, je souhaite utiliser spring, et apres j'utilise jquery pour afficher le résultat directement dans la fenetre, ( dans une div)

Reply

Marsh Posté le 30-01-2019 à 15:30:32    

Non, ici c'est l'inverse. Spring te permet d'attendre une requête HTTP "GET" d'un client web donc ici jQuery. C'est jQuery dans ton code Javascript qui fait appel à Spring. Comme je te l'ai précisé, en Javascript, passer un paramètre pour une méthode "GET" n'a aucun effet.

Reply

Marsh Posté le 30-01-2019 à 15:35:06    

donc il faudrait que je fasse d'abord un jquery.post() et apres get ?
 
Honnêtement, je suis un peu perdu la.


Message édité par R-a-p-h2 le 30-01-2019 à 15:35:47
Reply

Marsh Posté le 30-01-2019 à 15:48:18    

Remplace null dans $.get("/index", null, …) par document.getElementById('query').value.

Reply

Marsh Posté le 05-02-2019 à 13:27:21    

Jithel a écrit :

Remplace null dans $.get("/index", null, …) par document.getElementById('query').value.


 
Merci, pour ton aide, alors j'ai pas réussi avec le getElementByid, enfaîte quand je submit ça me claque un 403.  
 
Du coup à la place de null j'ai mis {"query": que} qui reprend mon input text.
et avec un val(),  ma query string passe, mais uniquement lors de chargement de la page. ( par exemple je mets ma recherche, je submit (erreur 403) puis je reviens en arrière la ma recherche passe) Bon c'est vraiment pas opti... du coup j'ai pensé à faire :

Code :
  1. var que = $( "input" )
  2.         .keyup(function() {
  3.             var value = $( this ).val();
  4.             $( "p" ).text( value );
  5.         })
  6.         .keyup();


 
Mais la ça marche pas du tout.
Aurais tu une idée pour trigger mon $.get soit a chaque fois que je tape une touche (peu etre pas la meilleur solution pour le nombre de request) ou ça par un button submit?
Merci  

Reply

Marsh Posté le 05-02-2019 à 13:42:02    

il faut que tu mettes  
$.get("/index", null, function (data){
    $('#result').html(data);
    });
 
dans keyup après  
$( "p" ).text( value );

Reply

Marsh Posté le 05-02-2019 à 13:53:40    

Yep parfait :D
 
merci beaucoup. + 2 hfr reputation :D
 ps ( j'ai mis {"query":value} à la place de null)
 
Par contre il envois une requête sur mon api drive a chaque lettre, c'est de rangeant a ton avis?
 
edit : petite question sup , si j'avais eu plusieurs  input différent, comment les différentiés dans la méthode?


Message édité par R-a-p-h2 le 05-02-2019 à 13:59:47
Reply

Marsh Posté le 05-02-2019 à 17:29:47    

Maintenant, au lieu de faire  
 
$( "input" )
        .keyup
 
tu fais
 
$("submit" )
       .submit
 
Tu utilises l'identifiant unique de ton input pour lui associer un événement keyup donc tu pourrais différencier plusieurs input simplement en copiant / collant ce code et en remplaçant l'identifiant par un autre identifiant unique associé (input1, input2, input3 et les keyup associés)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed