IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Accès à une action grâce à AJAX


Sujet :

JSF Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Accès à une action grâce à AJAX
    Bonjour à tous,

    Je suis un peu novice en développement JSF et je me heurte à un problème que je n'arrive pas à comprendre. Toutes mes recherches ont malheureusement été infructueuses...

    Voici mon problème. Je voudrais, à partir d'un script présent dans une page web, accéder à une action d'un bean.

    Le bout de script en question :
    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
    19
     
    switch(data.action)
    {
        case('BigBlind'):
            $.ajax({
                url: '#{tableBean.setBigBlind()}',
                success: function(){
                    alert('OK');
                },
                error: function(){
                    alert('Erreur setTest');
                }
            });
            break;
     
        default
            alert('Erreur');
            break;
    }
    Mon bean :

    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
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
     
    @ManagedBean
    @SessionScoped
    public class TableBean  implements SessionBean, Serializable{
     
        @EJB
        private JeuFacadeLocal jeuFacade;
        @EJB
        private JoueurFacadeLocal joueurFacade;     
        @EJB
        private TypeJeuFacadeLocal typejeuFacade;
     
        private int i_nbJoueursEffectif;
        private int i_nbJoueursRequis;
        private int i_joueurId;
        private String s_loginJoueur;
        private Jeu o_jeu;
        private Joueur o_joueur;
     
        public TableBean() {
        }    
     
     
     
        public void setBigBlind()
        {
            // On récupère le tapis du joueur et la somme à payer :
            int i_tapisJoueur = o_joueur.getJou_tapis();
            int i_bigBlind = o_jeu.getJeu_small() * 2;
     
            // Si le joueur a assez pour payer la grosse blind (2 fois la petite) :
            if(i_tapisJoueur >= i_bigBlind)
            {
                // Il paie cette blind :
                o_joueur.setJou_big(i_bigBlind);
                o_joueur.setJou_tapis(i_tapisJoueur - i_bigBlind);
            }
            // Sinon :
            else
            {
                // Sa blind vaut son tapis :
                o_joueur.setJou_big(i_tapisJoueur);
                o_joueur.setJou_tapis(0);
            }   
            this.joueurFacade.enregistrerJoueur(o_joueur);
        }
     
        public JeuFacadeLocal getJeuFacade() {
            return jeuFacade;
        }
     
        public void setJeuFacade(JeuFacadeLocal jeuFacade) {
            this.jeuFacade = jeuFacade;
        }
     
        public int getI_nbJoueursEffectif() {
            return i_nbJoueursEffectif;
        }
     
        public void setI_nbJoueursEffectif(int i_nbJoueursEffectif) {
            this.i_nbJoueursEffectif = i_nbJoueursEffectif;
        }
     
        public int getI_nbJoueursRequis() {
            return i_nbJoueursRequis;
        }
     
        public void setI_nbJoueursRequis(int i_nbJoueursRequis) {
            this.i_nbJoueursRequis = i_nbJoueursRequis;
        }
     
        public String getS_loginJoueur() {
            return s_loginJoueur;
        }
     
        public void setS_loginJoueur(String s_loginJoueur) {
            this.s_loginJoueur = s_loginJoueur;
        }
     
        public int getI_joueurId() {
            return i_joueurId;
        }
     
        public void setI_joueurId(int i_joueurId) {
            this.i_joueurId = i_joueurId;
        }
     
        public Joueur getO_joueur() {
            return o_joueur;
        }
     
        public void setO_joueur(Joueur o_joueur) {
            this.o_joueur = o_joueur;
        }
     
        @Override
        public void setSessionContext(SessionContext ctx) throws EJBException, RemoteException {
            throw new UnsupportedOperationException("Not supported yet.");
        }
     
        @Override
        public void ejbRemove() throws EJBException, RemoteException {
            throw new UnsupportedOperationException("Not supported yet.");
        }
     
        @Override
        public void ejbActivate() throws EJBException, RemoteException {
            throw new UnsupportedOperationException("Not supported yet.");
        }
     
        @Override
        public void ejbPassivate() throws EJBException, RemoteException {
            throw new UnsupportedOperationException("Not supported yet.");
        }   
     
    }
    Problème : à chaque chargement de ma page xhtml, l'action setBigBlind est réalisée... (testé avec le debugger)

    J'ai regardé du côté de a4j, mais le problème persiste.

    Quelqu'un saurait-il m'éclairer ?

    Merci d'avance !

  2. #2
    Membre averti Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Points : 333
    Points
    333
    Par défaut
    La gestion de l'ajax directement via du code Javascript n'est pas réalisable directement sauf peut-être en passant pas des appels très précis difficile a récupérer (donc c'est pas conseiller, très dur a mettre en place pour que JSF l’interprète convenablement).

    Il existe quelques api complémentaires qui mettent a disposition cette fonctionnalité (je pense par exemple a Seam qui met a disposition une librairie javascript qui permet d'appeler des actions JSF comme tu souhaite le faire).

    La méthode doit effectivement être appeler au changement de la page puisque avant de rendre la page coté navigateur JSF interprète toutes les EL de la page et donc l'appel a la méthode dans ton code javascript.

    Je te conseille donc de te tourner vers a4j pour lancer ton action en Ajax quand tu souhaite le faire mais vu que je n'ai pas le code d'appel a ta fonction js je ne peux pas te donner plus d'information.
    N'oubliez pas le quand vous avez votre solution.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    OK, merci pour ta réponse, je vais creuser de ce côté alors !

Discussions similaires

  1. Comment appeler une action en Ajax
    Par ombinte dans le forum Struts 2
    Réponses: 2
    Dernier message: 23/09/2013, 17h26
  2. Empêcher l'accès à une action par l'URL
    Par wokky dans le forum MVC
    Réponses: 2
    Dernier message: 06/04/2009, 19h28
  3. Réponses: 5
    Dernier message: 25/02/2009, 15h13
  4. lancer une action grâce à une touche du clavier
    Par Kihmé Xs dans le forum Général Java
    Réponses: 2
    Dernier message: 14/11/2008, 12h31
  5. Réponses: 3
    Dernier message: 18/05/2007, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo