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 :

Depuis Java, appeler une méthode Java qui retourne un String et renvoie vers une page


Sujet :

JSF Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Depuis Java, appeler une méthode Java qui retourne un String et renvoie vers une page
    Voilà mon souci :
    Je veux à partir d'une méthode java (par exemple un méthode appelée depuis un valueChangerListener) appeler une méthode Java qui renvoie une chaine de cvaractère et qui sera prise en compte en tant que chaine qui renvoie vers une nouvelle page JSF (bien sur bien configurée dans le faces-navigation).

    Est-il possible de faire ceci, si oui merci de me donner la syntaxe.

    Merci infiniment.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    enfaite ca revient à faire un navigateur.

    De ta page JSF ton code java est appelé, par exemple par un button
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     <h:commandButton value="Créditer le compte par carte bancaire"
            actionListener="#{creditAccountGUI.processAction}" />
    tu rajoutes la navigation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     <h:commandButton value="Créditer le compte par carte bancaire"
           action="#{monNavigateur.getPage}"  actionListener="#{creditAccountGUI.processAction}" />
    monNavigateur est un classe avec une methode getPage() qui te renvoi l'alias de navigation. Comme actionListener est invoqué avant la navigation, ton code java va changer la valeur de la page dans monNavigateur.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton aide, mais mon problème est plus complexe que ceci. J'ai un selectOneMenu avec une liste d'Items et quand je choisis un de ces Items, la seule façon qui me permet d'appeler une méthode java est la balise valueChangeListener qui appelle une méthode public void nonMethode(...){}. Je n'ai pas trouvé comment dire au selectOneMenu d'appeler une méthode public String versNavigation(){} qui permet de retourner l'alias de la navigation.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Si c'est seulement le valueChangeListener c'est la meme logique avec en plus
    immediate="true" et onchange="submit();"

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Immediate permet d'exécuter ce Listener avant les autres et submit() permet de réafficher la même page, moi je veux aller vers une autre page.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    non submit ne reaffiche pas la meme page obligatoirement. Il faut lire la section de JSF sur la navigation.

    L'attribute action va récupérer une string d'une méthode que tu defini et qui indique à JSF sur quelle page il doit aller. Il faut bien sur définir aussi les règles de navigation dans dans la face-config

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Tout ce que tu as est vrai, et je le pratique déjà avec commandButton, le problème est que j'ai ce code là, et je veux effectuer une action et aller vers une autre page quand je choisis un des éléments de mon Menu :

    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
     <h:form>
    <tr>
    <td class="inter" colspan="5"><label for="forfaitList"><strong>Les Forfaits proposés :</strong></label></td>
    <td align="right" class="inter" colspan="13">
    <h:selectOneMenu id="promoListItems" 
    value="#{OffresEtServicesBean.selectedPromoName}"
    onchange="submit()"
    valueChangeListener="#{OffresEtServicesBean.choisirPromoListener}" >
    <f:selectItem itemValue="0" itemLabel="Trier les Forfaits" itemDisabled="true" />
    <f:selectItem itemValue="0" itemLabel="------------------" itemDisabled="true"/>
    <f:selectItems value="#{OffresEtServicesBean.listeItemsPromosForfaits}" />
    </h:selectOneMenu>
    </td>
    </tr>
    </h:form>
    Actuellement, j'arrive vers la méthode choisirPromoListener et j'ai l'indice de l'élément sur lequel j'ai cliqué dans selectedPromoName par contre je ne peux pas défini le nom de la page vers laquelle je dois aller. Peux-tu m'aider sur ce point please ?

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <h:selectOneMenu id="promoListItems" 
    value="#{OffresEtServicesBean.selectedPromoName}"
    onchange="submit()"
    valueChangeListener="#{OffresEtServicesBean.choisirPromoListener}"
     
    immediate="true" action="#{monNavigateur.getPage}"
     >
    quand tu entres dans choisirPromoListener en fonction de la selection tu veux aller sur une page. Et bien sur fait un monNavigateur.setPage(taPage)

    monNavigateur c'est juste un managed bean qui contient un attribut String page que tu changes selon ton souhait de navigation.

    JSF va lire cette attribut en appelant getPage (à cause de action="") et le tour et joué. Si je ne me trompe. Il faut peut etre faire un appel à renderResponse() du FacesView context.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci infiniment, mais pour info, il n'y pas d'attribut action dans le selectOneMenu sinon ça aurait été très facile ;-)

    Alors comment faire ?

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    context=FacesContext.getCurrentContext();
    context.getApplication().getNavigationHandler().handleNavigation(context,"*","research_simple");
     context.renderResponse();
    pas d'action pour une change listener, c'est déprimant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appeler une méthode Java depuis javascript
    Par zied_21 dans le forum Langage
    Réponses: 4
    Dernier message: 18/03/2011, 17h58
  2. Réponses: 1
    Dernier message: 26/02/2010, 15h30
  3. [JNI] appel d'une méthode java depuis le code natif
    Par myryad dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 19/05/2009, 11h23
  4. Réponses: 2
    Dernier message: 10/12/2008, 10h53
  5. Appel d'une méthode java par le biais d'un lien
    Par Lex92 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 02/07/2008, 13h17

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