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 :

Navigation Rules ne marche pas


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 139
    Par défaut Navigation Rules ne marche pas
    Bonjour,

    je n'arrive pas à connecter mes boutton sur mes regles de navigations. Il ne se passe rien quand je clique dessus, il recharge la page courante.

    Face-config.xml

    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
     
    <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.3w.org/2001/XMLSchema-instance"
    			  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
    			  version="1.2">
     
    	<application>
    		<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    	</application>
     
    	<application>
        	<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
     	</application>	
     
    	<navigation-rules>
    		<from-view-id>*</from-view-id>
    		<navigation-case>
    			<form-outcome>connectSuccess</form-outcome>
    			<to-view_id>Perso.xhtml</to-view_id>
    		</navigation-case>
    	</navigation-rules>
    </faces-config>
    Ma page xhtml

    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
     
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
    	  xmlns:f="http://java.sun.com/jsf/core"
    	  xmlns:h="http://java.sun.com/jsf/html">
     
    	  <f:loadBundle var="msgs" basename="MessageRessources"/>
     
    		<f:view>
    			<h:form id="test">
    			<div class="cssAccueil_imgInscription">
    				<img height="100%" width="100%" src="Images/inscription_fond.png"/>
     
    				<div class="cssAccueil_inscription">	
    					<div class="cssAccueil_titre_inscription"><h:outputText value= "INSCRIPTION "/></div>
     
    					<div class="cssAccueil_couple">
    						<span class="cssAccueil_label"><h:outputText value="#{msgs.testpseudo}"/></span>
    						<span class="cssAccueil_texte"><h:inputText value="#{userBean.nom}" /></span>
    					</div>
    					<div class="cssAccueil_couple">
    						<span class="cssAccueil_label"><h:outputText value= "Password "/></span>
    						<span class="cssAccueil_texte"><h:inputText value="#{userBean.password}" /></span>
    					</div>
    					<div class="cssAccueil_couple">
    						<span class="cssAccueil_label"><h:outputText value= "Nom "/></span>
    						<span class="cssAccueil_texte"><h:inputText value="#{userBean.nom}" /></span>
    					</div>
    					<div class="cssAccueil_couple">
    						<span class="cssAccueil_label"><h:outputText value= "Prenom "/></span>
    						<span class="cssAccueil_texte"><h:inputText value="#{userBean.prenom}" /></span>
    					</div>
    					<div class="cssAccueil_couple">
    						<span class="cssAccueil_label"><h:outputText value= "Date de naissance "/></span>
    						<span class="cssAccueil_texte"><h:inputText value="#{userBean.dateNaissance}" /></span>
    					</div>
     
    					<div class="cssAccueil_boutton_inscription">
    						<h:commandButton value="OK" action="#{userBean.enregistrer}"/>
    					</div>
    				</div>
    			</div>
    		</h:form>
    	</f:view>
    </html>
    Et mon bean ou est defini l'action
    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
     
    @Component("userBean")
    @Scope("session")
    public class UserBean implements Serializable{
     
    	private static final long serialVersionUID = 4144379235689621792L;
     
    	//private TUsers currentUser;
    	//private transient TUsersService userService;
     
    	private String pseudo;
    	private String nom;
    	private String prenom;
    	private String password;
    	private Date dateNaissance;
    	private String mail;
    	private String adresse;
    	private Integer cp;
    	private String ville;
    	private String pays;
     
    	@PostConstruct
    	public void init(){
    	}
     
    	public String enregistrer(){
    		System.out.println("test");
    		return "connectSuccess";
    	}
    Je ne comprends pas, même si je mets dans mon bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:commandButton value="Connexion" action="connectSuccess" immediate="true"/>
    il me recharge la page courante et c'est tout.

    Si je regarde le code source de la page je vois ceci dans la déclaration de mon form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div class="cssLayout_h_connect"><form id="_id5" method="post" action="/PhotoBook/Accueil.jsf" enctype="application/x-www-form-urlencoded">
    C'est normal qu'il y ai "/PhotoBook/Accueil.jsf" dans action alors que c'est la page sur laquelle je suis?

    Si quelqu'un à un idée.

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 65
    Par défaut
    Juste quelques idées comme ça ..

    - Essaye de placer ton <h:commandButton> dans un autre form (essaye la version a4j et la version jsf classique mais sans propriétés autre que l'id.

    - Vérifie que les majuscules sont bonnes et dans ton fichier jar que l'arborescence du fichier est ok pour "Perso.xhtml"

    - Théoriquement si tu as un refresh de la page c'est qu'il ne trouve pas la destination mais je connais pas assez JSF pour savoir si JSF n'essaye pas d'accéder à "/PhotoBook/Accueil.jsf" au lieu de "Perso.xhtml"

    - Essaye de faire un lien avec une page qui ne contient que ton bouton dans un formulaire jusqu'a ce que ça marche et puis essaye de trouver la différence avec ta page qui plante, voir si ta page est légère essaye de reconstruire ta page à partir d'une structure qui fonctionne

  3. #3
    Membre confirmé Avatar de koack
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 60
    Par défaut
    Salut,

    je ne suis pas sûre a 100% mais je dirais que c'est peut etre l'entête de ton fichier faces-config qui ne va pas.
    essaie ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
            version="2.0">
    J'espere que cela t'aidera

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    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
    Par défaut
    Première question, vous avez votre message "test" dans la console ou pas? Si pas, l'action n'est pas appelée. En général, ça se produit quand la validation échoue. Pour voir les erreurs de validation, ajouter un <h:messages/> dans votre form.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 139
    Par défaut
    Merci pour toutes ces pistes.

    Je les ai toutes essayées mais en vain. Après 3 heures de galère, j'ai décider de reprendre des librairies d'un tutoriel et oh miracle cela s'est mis à marcher. Je trouve d'ailleurs que toutes ces librairies deviennent vite galère, il y en a énormément avec 10 version de chaque qui sont évidemment pas compatibles les unes avec les autres....bref.

    Cela m'a mené à une nouvelle erreur qui doit provenir également d'une librairie ou d'un fichier de conf, il n'arrive pas à charger 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
     
    GRAVE: /Pages/Accueil/inscription.xhtml @19,80 value="#{userBean.pseudo}": Target Unreachable, identifier 'userBean' resolved to null
    javax.faces.el.PropertyNotFoundException: /Pages/Accueil/inscription.xhtml @19,80 value="#{userBean.pseudo}": Target Unreachable, identifier 'userBean' resolved to null
    	at com.sun.facelets.el.LegacyValueBinding.getType(LegacyValueBinding.java:96)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:110)
    	at javax.faces.component.UIInput.validate(UIInput.java:679)
    	at javax.faces.component.UIInput.executeValidate(UIInput.java:796)
    	at javax.faces.component.UIInput.processValidators(UIInput.java:412)
    	at javax.faces.component.UIForm.processValidators(UIForm.java:165)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:905)
    	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:341)
    	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:78)
    	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    	at java.lang.Thread.run(Thread.java:662)
    Le Bean est déclaré comme indiqué dans le post precedant avec ces 2 annotations :

    @Component("userBean")
    @Scope("session")


    Si j'enlève ces annotations et que dans mon fichier de conf face-config.xml je rajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <managed-bean>
    	<managed-bean-name>userBean</managed-bean-name>
    	<managed-bean-class>fr.pb.web.UserBean</managed-bean-class>
    	<managed-bean-scope>session</managed-bean-scope>
    	</managed-bean>
    Alors sa marche. Mais je voudrais utiliser les annotations.

    Il me manque koi? une lib ou c'est un problème de conf?

    Merci.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    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
    Par défaut
    Citation Envoyé par crocodingo Voir le message
    Je trouve d'ailleurs que toutes ces librairies deviennent vite galère, il y en a énormément avec 10 version de chaque qui sont évidemment pas compatibles les unes avec les autres....bref.
    Il y a une certaines compatiblilité, mais ile vaux mieux utiliser celles qui vont ensemble. Et utiliser la bonne version dont vous avez besoin. Les dépendances, c'est en général très bien documenté sur le site des dites librairies. Si vous commenciez pas nous fournir la liste des librairies que vous utilisez et leur version, qu'on voie ce qui cloche.

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 139
    Par défaut
    La liste de mes librairies :

    antlr-2.7.6.jar
    asm.jar
    cglib-2.1.jar
    commons-beanutils.jar
    commons-collections.jar
    commons-dbcp-1.2.2.jar
    commons-digester.jar
    commons_logging.jar
    commons-pool-1.2.jar
    dom4j-1.6.1.jar
    el-api.jar
    el-ri-1.0.jar
    hibernate_annotations.jar
    hibernate-commons-annnotations.jar
    hibernate3.jar
    jaybird-2.1.1.jar
    jsf-api.jar
    jsf-facelts-1.1.6.jar
    jsf-impl.jar
    jstl.jar
    jta.jar
    persistence.jar
    serializer-2.7.1.jar
    spring.jar
    standard.jar
    struts.jar
    xalan-2.4.0.jar

    Voila pour la liste.

    Pour ne pas rester bloquer, je déclare donc mes Bean dans mon face-config.xml, par contre je ne peux pas utiliser mes service spring dans mes bean. Ils sont à null, je pense que cela viens du meme problème mais j'en suis pas sur.

    Dans mes Bean j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @Component("userBean")
    @Scope("session")
    public class UserBean implements Serializable{
     
    	private static final long serialVersionUID = 4144379235689621792L;
     
    	@Autowired
    	private transient UsersService userService;
    Mais mon userService est à null, il n'est pas injecté malgrès l'annotation @Autowired

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 139
    Par défaut
    Bon cette fois c'est la bonne. J'ai effectivement suivi ton conseil et supprimé toutes les librairies, pour reprendre les bonnes.

    J'ai donc telechargé :

    JSF 1.2
    Spring 2.5
    Hibernate 3.2
    + les Apache commons

    Tout marche nickel, les règles de navigations et les injections des bean spring.


    Merci pour tous vos conseils.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/01/2013, 09h56
  2. Navigation rule ne fonctionnant pas
    Par stc074 dans le forum JSF
    Réponses: 2
    Dernier message: 19/01/2012, 15h13
  3. hotlinking rule ne marche pas
    Par lacasuela dans le forum Apache
    Réponses: 3
    Dernier message: 11/01/2009, 22h56
  4. Réponses: 2
    Dernier message: 24/04/2008, 15h57
  5. navigation-rule ne marche pas
    Par verbose dans le forum JSF
    Réponses: 5
    Dernier message: 10/10/2007, 10h20

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