Probleme: requete de recherche java-xhtml

basmaesi - 7 mai 2013 à 11:33
 basmaesi - 8 mai 2013 à 14:03
Bonjour;
je suis étudiante, j'ai un projet de fin d’étude dont je développe mon application avec les jsf. mon vrai problème est dans la recherche(page recherche.xhtml), lorsque je tape une requête composée des mots clés juste le résultat concernant le dernier mot clé s'affiche(problème dans la boucle for:page recherch.java classe diviserchaine). le résultat s'affiche dans la page recherche.xhtml, quoi qu'il faut faire pour afficher toutes les résultats de touts les mots clés voici le code et merci pour toute aide

----------------page "recherche.xhtml"---------------------



















,

,

----

,






,

,

----

,


















---------------classe recherch.java------------------

package controle;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import java.util.List;
import java.util.Iterator;



import model.Motcle;
import model.Probleme;
import model.Ressource;
import model.Utilisateur;

public class recherch {
private Ressource res;
private Utilisateur utl;
private Probleme pbme;
private Motcle mt;
private List ress;



public Ressource getRes() {
return res;
}

public void setRes(Ressource res) {
this.res = res;
}

public Motcle getMt() {
return mt;
}

public void setMt(Motcle mt) {
this.mt = mt;
}

public Utilisateur getUtl() {
return utl;
}

public void setUtl(Utilisateur utl) {
this.utl = utl;
}

public List getRess() {
return ress;
}

public void setRess(List ress) {
this.ress = ress;
}


public Probleme getPbme() {
return pbme;
}

public void setPbme(Probleme pbme) {
this.pbme = pbme;
}


public List verifier(String mot){
EntityManager em = null;

try {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("recherche");
em = emf.createEntityManager();

Query query = em.createQuery("select mt from Motcle mt join mt.ressources res where mt.motCle='"+mot+"'");
List resource= query.getResultList();
Iterator ressIterator=resource.iterator();
if(ressIterator.hasNext()!= true){
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage( " il n'existe aucun résultat dans ce contexte "));

}
else{

mt=(Motcle)ressIterator.next();
ress=mt.getRessources();

}
} finally {
if (em != null) {
em.close();
}
}
return ress;

}

public List diviserchaine(String chaine){
String str = chaine;

String[] temp;

String delimiter = " ";


temp = str.split(delimiter);

for(int i =0; i < temp.length;i++){

System.out.println(temp[i]);

String m=temp[i];
verifier(m);

}
return ress;

}


}

1 réponse

bonjour a tous,
j'ai trouvé la solution, il faut juste modifier la classe recherch.java et laisser la page recherche.xhtml telle qu'elle est (sauf l'appelle de la methode: à la place de recherch.diviserchaine(mot) mettez recherch.diviserverifi(mot)):

voilà le code:
package controle;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;




import model.Motcle;
import model.Probleme;
import model.Ressource;
import model.Utilisateur;

public class recherch {
private Ressource res;
private Utilisateur utl;
private Probleme pbme;
private Motcle mt;
private List<Ressource> ress;
private List<Ressource> l;





public Ressource getRes() {
return res;
}

public void setRes(Ressource res) {
this.res = res;
}

public Motcle getMt() {
return mt;
}

public void setMt(Motcle mt) {
this.mt = mt;
}

public Utilisateur getUtl() {
return utl;
}

public void setUtl(Utilisateur utl) {
this.utl = utl;
}

public List<Ressource> getRess() {
return ress;
}

public void setRess(List<Ressource> ress) {
this.ress = ress;
}


public Probleme getPbme() {
return pbme;
}

public void setPbme(Probleme pbme) {
this.pbme = pbme;
}


public List<Ressource> diviserverifi(String chaine){
String str = chaine;
String[] temp;
String delimiter = " ";
List<Ressource> list = new ArrayList<Ressource>();
EntityManager em = null;
try {
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("recherche");
em = emf.createEntityManager();
temp = str.split(delimiter);
for(int i =0; i < temp.length;i++){
String m=temp[i];
System.out.println(m);
Query query = em.createQuery("select mt from Motcle mt join mt.ressources res where mt.motCle='"+m+"'");
List resource= query.getResultList();
Iterator ressIterator=resource.iterator();
if(ressIterator.hasNext()!= true){
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage( " il n'existe aucun résultat dans ce contexte "));

System.out.println("ce nesiste pas");
}
else{

mt=(Motcle)ressIterator.next();
List ress=mt.getRessources();
Iterator rr=ress.iterator();
list.addAll(mt.getRessources());
while(rr.hasNext()){
res=(Ressource)rr.next();

System.out.println(res);


}
l=list;

}
l=list;
}
} finally {
if (em != null) {
em.close();
}
}

return l;

}

}
0
Rejoignez-nous