Bon, je suis comment dire... un bras cassé du java....
Voilà, je tente, j'essaie, je m'efforce par tous les moyens "d'envoyer" un paramètre à une jsp.... Et je GALERE!!!!
Petit debrief du contexte :
J'ai d'un côté une appli web avec 2 jsp (ou vues) et une servlet qui sert de contrôleur. De l'autre j'ai un web service.
Mon appli web fait :
1/ form.jsp => formulaire avec deux champs de saisie et quand on submit, on appelle le web service (en lui passant les paramètre).
La réponse de ce web service est asynchrone, cad qu'elle n'intervient pas à la suite de l'appel mais plutôt quand le traitement est fini côté web service.
2/ response.jsp => formulaire qui s'affiche suite à l'appel au webservice et qui affiche les deux paramètres saisis sur la première jsp ET un textarea qui est censé m'afficher la réponse du webservice quand elle arrive....
Mon webservice fait :
Un traitement spécifique et rappelle la servlet via URL.openConnection() en passant dans l'url le résultat du traitement. Je sais c'est pas joli du tout mais je n'ai pas trouvé autre chose....
Quand mon web service répond, j'avertis la servlet :
Dans ma jsp response.jsp, j'ai fait un rafraîchissement "maison" de mon textarea :
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 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String offerCode = request.getParameter("offerCode"); String subscriptionCode = request.getParameter("subscriptionCode"); String chargeCode = request.getParameter("chargeCode"); String date = request.getParameter("date"); String label = request.getParameter("label"); String operationType = request.getParameter("origin"); String amount = request.getParameter("amount"); StringBuffer sb = new StringBuffer(); sb.append(date + " " + label + " " + operationType + " " + amount + " " ); System.out.println(sb.toString()); HttpSession session = request.getSession(true); session.setAttribute("sortie", sb.toString()); getServletContext().getRequestDispatcher((String)params.get("urlResponse")).forward( request, response); } }
Et ben, ça marche pas.....En pas à pas, j'ai bien ma chaîne de sortie qui est mise dans la session mais elle ne s'affiche pas sur la jsp.... Je soupçonne un problème de session mais je ne trouve pas de solutions....
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 <body> <form method="POST" action="<c:url value="validationForm"/>"> <table> <tr> <td>From :</td> <td><input name="from" type="text" value="${from}" /></td> </tr> <tr> <td>To :</td> <td><input name="to" type="text" value="${to}" /></td> </tr> <tr> <td><input id="btn" name="button" type="submit" value="Send"></td> <td><input id="btnErase" name="button" type="submit" value="Erase"></td> </tr> <tr> <td colspan="2"><textarea id="sortie" name="sortie" rows="3" cols="10" readonly="readonly">${sortie}</textarea> </td> </tr> </table> </form> <script type="text/javascript"> function rafraichir() { var sortie = <%=session.getAttribute("sortie")%>; if(sortie==null) sortie = "Nothing to display"; document.getElementById('sortie').innerHTML = sortie; } setInterval(rafraichir, 1000); </script> </body>
Quelqu'un peut-il m'aider?
Merki!
Partager