Bonjour à tous,
Je viens vers vous pour vous faire par de mes petits soucis que je rencontre depuis hier.
Premièrement, je souhaite faire une recherche qui nous donne des réponses adéquate suivant ce que l'utilisateur tape dans la barre de recherche (par exemple si il tape "R", j'affiche tout les résultats commençant par "R") et la recherche s'affine au fur et à mesure.
Hier, l'envoi vers mon contrôlleur se passait très bien, aujourd'hui je me tape l'erreur :
Error 400: Required String parameter 'className' is not present
Ensuite, hier j'avais une autre erreur à cet envoi Ajax, mon controlleur ne me renvoyant pas le bon format et j'avais l'erreur suivante :
Error 406: SRVE0295E: Error reported: 406
Et franchement je vois pas d'où vient le problème, je pense avoir ajouter les bonnes dépendances dans Maven et pourtant rien à faire, si vous pouviez m'éclairer ça m'arrangerait beaucoup
Ma requête Ajax :
En sachant que si je fais un alert de search juste avant la requête il m'affiche bien ce que je veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $.ajax("searchClassName.html", {className : search}, function(data){ });
Mon controlleur Java :
Ici pareil, via mes affichages console je récupère bien les infos qu'il me faut, c'est le return qui coince.
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 @RequestMapping(value="/searchClassName", method=RequestMethod.GET) @ResponseBody public List<String> searchByName(@RequestParam(value = "className") String className){ List<MetaClass> resultSearchClassesByName = convertMetaClassCollectionToMetaClassList(metaClassService.searchClassByName(className)); List<String> resultString = new ArrayList<String>(); System.out.println("Classe recherchée : " + className); for (MetaClass myClass : resultSearchClassesByName) { System.out.println(myClass.getName()); resultString.add(myClass.getName()); } for (String myClass : resultString){ System.out.println("class réponse : " + myClass); } return resultString; }
Mes dépendances dans mon pom :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.3.0</version> </dependency>
Via les System.out dans mon controlleur je vois bien dans la console que tout se base bien compe je le veux, c'est vraiment le return qui pose problème...
J'ai essayer les dépendances suivantes dans mon pom, le résultat est le même
Mon autre soucis viens d'Hibernate, j'aimerais afficher des infos issue d'une relation à une autre table, mais Hibernate ferme la session après la première requête et je n'ai donc accès qu'aux infos de base que je souhaite affichées, pas le reste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency>
En fouillant sur le net j'ai vu que la solution la plus simple était de mettre le lazy à false dans Hibernate, mais mon maitre de stage ne veut pas que j'utilise cette solution, du coup je sais pas trop comment faire niveau code pour avoir les autres infos dont j'ai besoin, je dois modifier le Dao ou le Service ?
Sachant que pour l'instant j'ai ceci :
Service :
Dao :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 @Override @Transactional(propagation=Propagation.SUPPORTS, readOnly=true) public MetaClass getClassById(long id) { MetaClass myClass = metaClassDao.getClassById(id); myClass.getParentClass(); return myClass; }
En voulant afficher un élément en relation j'ai donc cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @Override @Transactional public Collection<MetaClass> searchClassByName(String name) { Query query = sessionFactory.getCurrentSession().createQuery("from MetaClass where name like '" + name + "%'"); List<MetaClass> listSearchClassByName = query.list(); return listSearchClassByName; }
Error 500: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Je vous remercie d'avance![]()
Partager