Basic JSF 2 et Tomcat 6 action résultat navigation isue

J'ai un JSF 2.0 avec mojara EL 2.2 sur tomcat 6 et je l'ai eu pendant un certain temps maintenant pendant le développement. J'ai récemment ajouté un formulaire avec un bouton de commande pour la connexion (substance de base) qui vérifie le nom d'utilisateur et mot de passe dans le bean géré à l'action doLogin.

 public String doLogin(){
        FacesMessage message = null;
        if((username.equals("user"))&&(password.equals("pass")))
                return "testpage.xhtml";
        else
            message = new FacesMessage("Invalid username or password");

         FacesContext.getCurrentInstance().addMessage(null, message);

        return null;
    }

Le problème est qu'après avoir passé par doLogin et retourné "testpage.xhtml" , la même page est affichée. Même si j'ai tout le fichier de xhtml à la racine de WebContent.

Dans la console de tomcat je reçois:

The ELResolvers for JSF were not registered with the JSP container.

Passer les paramètres en utilisant EL 2.2 fonctionne très bien.

J'utilise JSF avec Facelets. Peut me donner quelques conseils

0

3 Réponses

Implicit navigation is introduced since JSF 2.0. In old JSF 1.x you'd need to define a in faces-config.xml or to explicitly call ExternalContext#redirect() on an URL.

Ce problème suggère que votre application Web JSF 2.0 est en cours d'exécution dans JSF 1.x fallback modus. Assurez-vous que votre faces-config.xml est déclaré conforme à la version de spécification JSF 2.0.

<?xml version="1.0" encoding="UTF-8"?>



    <!-- Config here. -->


L'avertissement du résolveur EL n'est pas lié à ceci. Il est causé par l'utilisation de EL 2.2 de Glassfish sur Tomcat 6 et vous ne pourriez pas utiliser EL dans les pages .jsp (ce qui ne devrait pas poser de problème si vous n'utilisez que Facelets). Si vous voulez vous débarrasser de cet avertissement, utilisez plutôt JBoss EL de Glassfish EL. JBoss EL est une implémentation EL 2.1 améliorée tandis que Glassfish EL est une implémentation EL 2.2.

0
ajouté

Dans JSF 2.0 vue de page de test traduite en navigation implicite. S'il vous plaît changer votre code aime ici,

    public String doLogin(){
       FacesMessage message = null;
       if((username.equals("user"))&&(password.equals("pass"))) {
            return "testpage";
       } else {
            message = new FacesMessage("Invalid username or password");
            FacesContext.getCurrentInstance().addMessage(null, message);
       }
    return null;
}
0
ajouté

Je ne suis pas sûr, B'coz je ne vois pas un autre code.

Si vous ne définissez pas de règle de navigation spécifique dans faces-config.xml.

La valeur par défaut de $ SUB-DIRECTORY1/testpage.xhtml est $ SUB-DIRECTORY1/page de test

0
ajouté