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 :

Bean et accès à celui ci


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Points
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Par défaut Bean et accès à celui ci
    Bonjour,
    un petit (?) soucis avec une JSF et un bean.

    J'ai déclaré dans mon faces-config.xml un bean de cette façon :

    Code XML : 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
     
    <managed-bean>
          <description>
             The bean that manage link (redirect to the correct page, ...)
          </description>
          <managed-bean-name>BxManageLink</managed-bean-name>      
    <managed-bean-class>com.bluexml.tag.menu.link.alfresco.ManageLink</managed-bean-class>
          <managed-bean-scope>session</managed-bean-scope>
          <managed-property>
             <property-name>navigator</property-name>
             <value>#{NavigationBean}</value>         
          </managed-property>                
          <managed-property>
             <property-name>contentService</property-name>
             <value>#{ContentService}</value>
          </managed-property>
       </managed-bean>

    Ensuite dans ma jsp je tente d'appeller ce bean de la façon suivante :

    <h:commandButton action="#{BxManageLink.navigate}" id="saved_search-submit"/>
    (j'ai également tenté de faire des méthodes me renvoyant un String et de l'afficher).
    En résultat je n'ai rien, pas d'erreur, pas de sortie, rien...
    En changeant le "path" de ma classe en y mettant une erreur j'ai rien non plus, Tomcat démarre normalement et en arrivant sur ma page je n'ai pas non plus d'erreur.

    J'ai déjà utilisé ce genre de syntaxe et il me semble ne pas avoir fait d'oubli, ais-je tort ou pas?
    Voyez vous d'où ça peut venir?

    Merci.

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Points
    7 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Par défaut
    Quand tu cliques sur le bouton, rien ne se passe, c'est ça ?

    Juste pour être sûr : ton bouton se trouve bien dans un <h:form> ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Points
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Par défaut
    Oui il est dans un h:form et rien ne se passe. Et si j'utilise des méthodes me retournant une chaine de test (genre "toto") et que j'essaye de l'afficher dans ma page, idem je n'ai rien en retour (et aucune erreur).

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Points
    7 679
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Par défaut
    Bonjour,
    Qu'est ce que ça donne en testant avec un <h:message /> dans ta page ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Points
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Par défaut
    J'ai fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <h:form id="saved_search-form"> 
        <h:inputHidden id="saved_search-nodeType"/>
        <h:inputHidden id="saved_search-nodeId"/>
        <h:inputHidden id="saved_search-expanded"/>
        <h:inputHidden id="saved_search-jsonTree"/>
        <h:message for="saved_search-submit" />
        <h:commandButton action="#{BxManageLink.navigate}" id="saved_search-submit" style="visibility:hidden; display:none"/>
    </h:form>
    Et quand je clique je n'ai pas de message (si c'était le comportement attendu?).

    En regardant ce que j'ai en session je ne vois pas mon BxManageLink non plus, alors que d'autres Bean défini dans le même faces-config eux le sont.

  6. #6
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Points
    597
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Par défaut
    essaies avec un h:messages globalonly = false

    sinon utilises faces trace pour voir le cycle de vie de ta requête JSF.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Points
    48 804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Par défaut
    Erreur de validation de ta form. Comme tu utilise pas de h:messages, tu vois pas les messages d'erreur. Note qu'il y a une différence entre h:message (limité aux erreurs d'un composant) et h:messages (affiches tous les messages)

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Points
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Par défaut
    Alors j'ai testé avec <h:messages/> : rien, pas de message.
    J'ai testé également avec faces trace (je connaissais pas), là magie je vois bien mon bean (BxManageLink | com.bluexml.tag.menu.link.alfresco.ManageLink@1ba0b7c).

    J'ai fait un test en changeant le nom de ma méthode (navigate en getNavigate) et là miracle ça fonctionne...

    Merci à tout ceux m'ayant aidé, si quelqu'un a une explication logique je suis preneur ("navigate" serait-il un nom réservé?).

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Points
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Par défaut
    Je me suis un peu emballé. J'avais encore des bouts de code de tests qui, par magie, faisait que ça fonctionnait :

    Donc :
    - Ce code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:inputText value="#{BxManageLink.navigate}"/>
        <h:messages/>
        <h:commandButton action="#{BxManageLink.getNavigate}" id="saved_search-submit" style="visibility:hidden; display:none"/>
    - Ce code ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        <h:messages/>
        <h:commandButton action="#{BxManageLink.getNavigate}" id="saved_search-submit" style="visibility:hidden; display:none"/>
    Le fait d'appeler ma méthode 'getNavigate' avant mon action fait que je rentre dans ma méthode, sinon non... (mon bean est instancié, sinon non)
    Quelqu'un vois d'où ça peut venir?

  10. #10
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Points
    597
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Par défaut
    primo met ton h:messages après le contrôle sinon tu n'aura pas l'erreur !

    deuxio change le nom de ta méthode, remplaces get par do .

    met un point d'arrêt sur la première ligne de ta méthode pour bien vérifier qu'il rentre ou pas.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Points
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Par défaut
    Ah je ne savais pas pour le h:messages (newbe en Jsf...). j'ai donc fait la modif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:commandButton action="#{BxManageLink.doNavigate}" id="saved_search-submit" style="visibility:hidden; display:none"/>
        <h:messages/>   
        <h:message for="saved_search-submit"/>
    Et je n'ai pas d'erreur (dans mes logs, à l'écran, console tomcat, ... nul part).
    Et pour le point d'arrêt je le fais à chaque fois et il ne rentre pas dedans (sauf quand je mettais mon inputText avant).

    Il n'y a rien de spécial à faire dans ma classe ManageLink? Dans mon faces-config? Un peu nouveau dans les managed beans et jsf je nage pas mal là...

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Points
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Par défaut
    J'ai réduit ma page au minimum (celle que je montrais était inclue dans un plus gros portail) fait un bean minimal (un exemple de la FAQ).

    Ma page entière est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
     
     
    <h:form id="saved_search-form"> 		
        <h:inputHidden id="saved_search-nodeType"/>    
        <h:inputHidden id="saved_search-nodeId"/>
        <h:inputHidden id="saved_search-expanded"/>
        <h:inputHidden id="saved_search-jsonTree"/>                    
     
    	<h:commandButton action="#{monManagedBean.monAction}" id="ok" value="ok"/>    
        <h:messages/>   
        <h:message for="ok"/>        
    </h:form>
    J'y accède directement et là j'ai une erreur :
    avax.faces.FacesException: Component ok must be embedded in an form
    caused by:
    org.apache.jasper.JasperException: Component ok must be embedded in an form
    caused by:
    java.lang.IllegalArgumentException: Component ok must be embedded in an form

  13. #13
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Points
    597
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Par défaut
    enlèves le <h:message for="ok"/>

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Points
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Par défaut
    Ca me le fait avec ou sans (et avec ou sans le h:messages).

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Points
    48 804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Par défaut
    manque un f:view autour de tout çà!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <f:view>
    <h:form>
    ....
    </h:form>
    </f:view>

    Au fait, la position de h:messages n'a pas d'importance tant qu'il est dans la vue. Toutes tes erreurs ont lieu lors des phases de applyrequest value, validation, update model, navigation. Le h:messages fait son rendu en fin de process.

    On peut voir le code de ton BxManageLink au fait? Et regarde aussi si il y a pas d'exception dans tes logs du serveur

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Points
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Par défaut
    J'ai testé donc ma page toute seule avec le f:view et ça fonctionne! (ouf déjà...).

    Dans le portail dans lequel j'inclus ma jsp par contre cela ne fonctionne pas (il y a un f:view qui englobe le tout), je ne vois pas encore d'où ça peut venir mais je vois déjà mieux; je vais donc chercher de mon coté, merci à vous tous en tout cas

  17. #17
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Points
    8 235
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Par défaut
    si ta page est inclue dans une autre avec f:view il faut mettre f:subview dans celle qui est inclue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/09/2007, 12h58
  2. Acces a un session bean
    Par seddik_saber dans le forum JSF
    Réponses: 1
    Dernier message: 27/11/2006, 16h00
  3. Accès à un bean depuis jsp
    Par pippou dans le forum JSF
    Réponses: 4
    Dernier message: 24/07/2006, 16h33
  4. Acces aux attributs d'un bean dans une jsp
    Par mariemor64 dans le forum Struts 1
    Réponses: 2
    Dernier message: 02/06/2006, 11h32
  5. [jsp][struts] Acces au bean d'un <logic:iterate>
    Par Altherac dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 29/09/2004, 14h02

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