Sous struts 2 + jpa+ spring --> afficher un article d'une liste d'articles grace
pokou03
Messages postés4Date d'inscriptionlundi 7 décembre 2009StatutMembreDernière intervention17 juin 2010
-
17 juin 2010 à 13:12
pokou03
Messages postés4Date d'inscriptionlundi 7 décembre 2009StatutMembreDernière intervention17 juin 2010
-
17 juin 2010 à 16:36
Bonjour,
je fais un wiki qui ressemble un peu à un CRUD sous Struts 2 + JPA/Hibernate + Spring.
Dans ma .JSP qui affiche la liste de mes articles, j'ai un bouton "afficher le détail de l'article" à coté de chaque article.
Dans ma méthode "afficher" de mon Action.java
Je réussi à afficher le 1er par :
article = articleModel.afficher(1);
mais je ne réussi pas à récupérer l' id d'un article quelconque de la liste :
quand j'écris ceci :
article = articleModel.afficher(id);
l'id contient null.
Pourriez vous me dire ce qui coince ?
est ce la persistene ?
merci d'avance
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 juin 2010 à 14:00
Salut,
Comment veux-tu qu'on te réponde avec si peu de détail ? Montres nous au moins ton code où tu définit la valeur de ta variable id (à première vue, tu ne le fait jamais vue le null pointer...) et le code où tu essaye de récupérer ton article.
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
public class Action1 extends ActionSupport implements SessionAware
{
// les interfaces
private IArtticleModel articleModel;
private IUserModel userModel;
private ICommentaireModel commentaireModel;
// les variables
private String username;
private String password;
private String editorId;
private String value;
private Article article;
private List articles;
private Integer id;
private Map session;
private User currentUser;
// --------------------------------------------
public void setArticleModel(IArtticleModel articleModel)
{
this.articleModel = articleModel;
}
// --------------------------------------------
public void setUserModel(IUserModel userModel)
{
this.userModel = userModel;
}
// --------------------------------------------
public void setCommentaireModel(ICommentaireModel commentaireModel)
{
this.commentaireModel = commentaireModel;
}
// --------------------------------------------
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
// --------------------------------------------
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
// --------------------------------------------
public String getEditorId()
{
return editorId;
}
public void setEditorId(String editorId)
{
this.editorId = editorId;
}
// --------------------------------------------
public String getValue()
{
return value;
}
public void setValue(String value)
{
this.value = value;
}
// --------------------------------------------
public Article getArticle()
{
return article;
}
// --------------------------------------------
public List getArticles()
{
return articles;
}
// --------------------------------------------
public void setSession(Map arg0)
{
session = arg0;
}
// --------------------------------------------
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
// --------------------------------------------
public User getCurrentUser()
{
return currentUser;
}
// --------------------------------------------
public String execute()
{
return "success";
}
// --------------------------------------------
public String lister()
{
if (session.containsKey("userid"))
{
currentUser = userModel.find((Integer)session.get("userid"));
}
if (currentUser == null)
return "error";
articles = articleModel.lister();
return "success";
}
// ------------------------------------------
public String afficher()
{
// preparer le passage du parametre id client
article = articleModel.afficher(1);
return "success";
}
// --------------------------------------------
public String creer()
{
// permet d'afficher le formulaire d'ajout
return "success";
}
// --------------------------------------------
// mapping objet vers relationnel
public String ajouter()
{
if (session.containsKey("userid"))
{
currentUser = userModel.find((Integer)session.get("userid"));
}
if (currentUser == null)
return "error";
// cree un article
Article a = new Article(article.getTitre(), article.getCorp());
// sauve l'article dans le model
articleModel.ajouter(article);
// ajoute l'article a ce user
currentUser.addArticle(article);
return "success";
}
// --------------------------------------------
public String editer()
{
// permet d'afficher le formulaire de modif
return "success";
}
// -------------------------------------------
public String modifier()
{
if (session.containsKey("userid"))
{
currentUser = userModel.find((Integer)session.get("userid"));
System.out.println("username"+ username);}
if (currentUser == null)
return "error";
// cree un article
// Article a = new Article(article.getTitre(), article.getCorp());
if (article != null)
{
// sauve l'article dans le model
articleModel.modifier(article);
}
return "success";
}
// -------------------------------------------
public String supprimer()
{
if (article != null)
{
// efface l'article du modele
articleModel.supprimer(article);
}
return "success";
}
// --------------------------------------------
public String aff_login()
{
return "success";
}
// --------------------------------------------
public String dologin()
{
// affiche le loggué
System.out.println(username);
System.out.println(password);
User u = userModel.login(username, password);
if (u == null)
{
session.remove("userid");
return "error";
}
@Entity
public class Article implements Serializable
{
// les variables
private int id;
private String titre;
private String corp;
private Date creation;
private Set commentaires;
private User user;
// -------------------------------------
@Id @GeneratedValue(strategy=GenerationType.AUTO)
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
// ---------------------------------------
public String getTitre()
{
return titre;
}
public void setTitre(String titre)
{
this.titre = titre;
}
// ---------------------------------------
public String getCorp()
{
return corp;
}
public void setCorp(String corp)
{
this.corp = corp;
}
// --------------------------------------
@Temporal(TemporalType.DATE)
public Date getCreation()
{
return creation;
}
public void setCreation(Date creation)
{
this.creation = creation;
}
// ---------------------------------------
@OneToMany(cascade=CascadeType.ALL)
// un article peut avoir plusieurs commentaires
public Set getCommentaires()
{
return commentaires;
}
public void setCommentaires(Set commentaires)
{
this.commentaires = commentaires;
}
// ---------------------------------------
@ManyToOne(cascade=CascadeType.PERSIST)
// plusieurs articles peuvent etre du meme auteur
public User getUser()
{
return user;
}
public void setUser(User user)
{
this.user = user;
}
// les methodes appellees dans execute de action1
public void addCommentaire(Commentaire c)
{
if (commentaires == null)
commentaires = new HashSet();
commentaires.add(c);
}
}
[size=300][color=red]Mon fich de persistence :/color/size
[size=300][color=red]et ma liste d'articles .jsp :/color/size
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 juin 2010 à 14:48
Salut,
Euh, oui ok, mais là c'est trop détaillé du coup
Mets en évidence les quelques lignes qui posent problèmes (en les mettant en couleur par exemple), car là ca donne pas trop envie de lire tout le code.
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
pokou03
Messages postés4Date d'inscriptionlundi 7 décembre 2009StatutMembreDernière intervention17 juin 2010 17 juin 2010 à 15:52
Oui tu as raison :
dans l'action , j'appelle la methode afficher de mon model, mais avec l'index 1 en dur ( en violet ici), donc il m'affiche bien le premier de la liste :
...
public String afficher()
{
// preparer le passage du parametre id client
article = articleModel.afficher(1);
return "success";
}
...
je voudrais remplacer ce 1 par l'id de l'article listé à coté de mon bouton afficher de la jsp ,( en violet ici) :
et dans mon modelArticle, je crée bien mon context de persistance, et j'affiche un article gràace à son id (en violet ici) :
...
@PersistenceContext
public void setEntityManager(EntityManager entityManager)
{
this.entityManager = entityManager;
}
// ---------------------------------------
public List lister()
{
// ici du langage EJBQL
return (List)entityManager.createQuery("from Article").getResultList();
}
ainsi je cherche le mecanisme qui me permettra dans l'Action de récupérer dans la value stack (ou grace à un getId ... mais lequel ?) l'id que je cherche.
peut etre que je me situe dans la mauvaise couche : au lieu d'etre dans la couche request, je suis encore dans la couche session ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 juin 2010 à 16:12
Salut,
C'est à partir de ta requête HTTP (envoyée par ta jsp) que tu dois spécifier l'id à afficher : tu le récupère au niveau de ton action, et tu l'envoie à ta couche modèle pour récupérer l'article correspondant.
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement