Comme trace ça pourrait aller, oui. Tu ne sais pas te servir du mode debug ? C'est quand même indispensable. Tu utilises quoi comme EDI ?
Version imprimable
non je sais pas le mode debug.j'utilise eclipse jee oxygene.
j'ai fait system.out.println et j'obtient rien:
Code:
1
2
3 22:50:06,541 INFO [org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] (default task-3) HHH000397: Using ASTQueryTranslatorFactory 22:50:06,682 INFO [stdout] (default task-3) []
Il suffit de démarrer le serveur en mode debug (le bouton est juste à côté du bouton de lancement normal, mais avec un petit insecte comme icône au lieu du triangle vert). Ensuite, dans le source, à gauche, il y a une barre verticale : en double-cliquant dedans en face d'une instruction, tu ajoutes un break point (ou en utilisant le menu contextuel, toggle breakpoint, ou en mettant le curseur dans la ligne et CTRL-SHIFT-B sur Windows). A l'exécution, le programme sera suspendu sur la ligne avec ce breakpoint, Eclipse te proposera de basculer dans la perspective de debug, et en haut à gauche, tu pourras consulter l'état des variables.
On voit donc que le résultat est vide. Donc il y a bien un souci avec la requête. Je ne connais pas les EJB, donc je ne peux pas t'aider sur cette partie.
@joel.drigo
salut j'ai trouver mon problème mais j'ai pas pu la résoudre
la date et renvoyer sous une autre format Mon Jan 04 00:00:00 WAT 2010
comme la montre la figure suivante:
Pièce jointe 368731
je veux que la date soit de la forme suivante 2010-10-02 pour que la méthode fonctionne bien et faire retourner une résultat.
Non, ce que tu vois c'est juste la façon standard de conversion en String d'un type java.util.Date (méthode toString(), ce qui est utilisé quand tu fais un System.out.println d'un type Date), et c'est en partie pour cette raison que ta solution par concaténation ne pouvait pas fonctionner.
j'ai modifier le servlet le doGet:
et la méthode au niveau de l’implémentation j'ai le rendre de type StringCode:
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 package controleur; import java.io.IOException; //import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException; //import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException; import entity.Entree; import session.ArticleEJBImplLocal; @WebServlet(name="en",urlPatterns="/ListeEntreesCtl") public class ListeEntreesCtl extends HttpServlet { private static final long serialVersionUID = 1L; //private static final String Date = null; @EJB private ArticleEJBImplLocal imp; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Date datedebut = null; //Date datefin = null; String datedebut = request.getParameter("datedebut").toString(); String datefin = request.getParameter("datefin").toString(); System.out.println("dateFin :" + datefin + "\n dateDebut :" + datedebut); if ((!datedebut.isEmpty()) && (!datedebut.isEmpty())) { String dateDebut2 = datedebut; String dateFin2 = datefin; System.out.println("dateFin2 :" + dateFin2 + "\n dateDebut2 :" + dateDebut2); try { request.setAttribute("entrees",imp.RechercherParDate(datedebut, datefin)); request.getRequestDispatcher("ListeEntrees.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); }}} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
et c'est bien maintenant elle marcheCode:
1
2
3
4
5
6 public List<Entree> RechercherParDate(String datedebut,String datefin) { return (ArrayList<Entree>)em.createQuery("SELECT a FROM Entree a WHERE a.dateEntree BETWEEN '"+datedebut+"' AND '"+datefin+"'").getResultList(); }
Tu es vraiment têtu :roll: Je pense surtout que depuis le début tu n'as pas corrigé le format du SimpleDateFormat (comme je te l'avais signalé encore une fois au message #19). Alors, là, évidemment comme tu concatènes directement la date en String dans le format de saisie dans ta requête et que ce format matche le format de date du SGBD, ça fonctionne. Mais on ne doit pas procéder ainsi, parce que permet l'injection SQL.