Utiliser une methode d'un controller

-
Bonjour,
J'ai un controller avec une methode. Je veux appeler cette methode dans un autre controller. Exemple :
@Named("documentsController")
@SessionScoped
public class DocumentsController implements Serializable {

    @EJB
    private DocumentsFacade ejbFacade;

public void List<Documents> list()    
List<Documents>  list_doc = ejbFacade.findAll();
return list_doc;
}

et je veux appeler la methode list() dans un autre controller :

@Named("classeurController")
@SessionScoped
public class ClasseurController implements Serializable {

    @EJB
    private ClasseurFacade ejbFacade;

public void  contenuClasseur()    
DocumentsController doc = new DocumentsController();
ListwDocuments> list = doc.list();
......

}

EDIT : Ajout des balises de code

j'ai besoin d'aide. Merci
Afficher la suite 

Votre réponse

2 réponses

Messages postés
5
Date d'inscription
jeudi 2 août 2018
Dernière intervention
3 août 2018
0
Merci
Essai de rendre plus propre ton code.
Commenter la réponse de H_Le_Grand
Messages postés
5308
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
0
Merci
Salut,

Si je reprends ce que tu as fait:
@Named("documentsController")
@SessionScoped
public class DocumentsController implements Serializable {

    @EJB
    private DocumentsFacade ejbFacade;

  public void List<Documents> list()    
    /* Inutile tu peux retourner directement le résultat de findAll sans passer par une variable temporaire qui n'a pas d'utilité. */
    /*List<Documents>  list_doc = ejbFacade.findAll();
    return list_doc;*/
    return ejbFacade.findAll();
  }
}


Tu n'utilises pas déjà la méthode list() dans la méthode contenuClasseur() ?
Si, tu veux utiliser la même instance de DocumentsController pour tous les ClasseurController, il suffit de passer directement la référence de DocumentsController à la méthode contenuClasseur ou de passer par une variable de classe.

Ex1:
@Named("classeurController")
@SessionScoped
public class ClasseurController implements Serializable {

    @EJB
    private ClasseurFacade ejbFacade;

  public void  contenuClasseur(DocumentsController doc)  {
    List<Documents> list = doc.list();
    ......
  }
 /*
  ou alors, si tu n'utilises que la méthode list, tu peux simplement faire:
  public void  contenuClasseur(List<Documents> list)  {
    ......
  }
*/
}


Ex2:
@Named("classeurController")
@SessionScoped
public class ClasseurController implements Serializable {
    @EJB
    private ClasseurFacade ejbFacade;
    private DocumentsController mDocumentsController;
    /*
    ou alors, si tu n'utilises que la méthode list, tu peux simplement faire:
    private List<Documents> mDocuments;
   */

  public(ou protected) void setDocumentsController(DocumentsController documentsController) {
    mDocumentsController  = documentsController;
  }
  /*
  ou, en fonction du cas d'utilisation
  public(ou protected) void setDocuments(List<Documents> documents) {
    mDocuments  = documents;
  }
  */
  public void  contenuClasseur()  {
    List<Documents> list = mDocumentsController.list();
    /* ou mDocuments en fonction du cas d'utilisation */
    ......
  }
}

Après, comme je ne suis pas trop aux faits des EJB, je ne sais pas trop si ce que j'ai proposé est applicable, mais dans tous les je pense que ce site ICI pourrait te donner des pistes.


Commenter la réponse de Twinuts

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.