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 :

Utilisation de ViewController/AbstractViewController


Sujet :

JSF Java

  1. #1
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut Utilisation de ViewController/AbstractViewController
    Bonjour,

    J'ai une classe qui implemente l'interface ViewController pour integrer le cycle de jie d'une JSP.

    Je definie une instance de cette classe dans le faces-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <managed-bean>
    		<managed-bean-name>dossier1$mapage</managed-bean-name>
    		<managed-bean-class>fr.monappli.maClasse</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    Sachant que ma page JSP est : {webapp}/dossier1/mapage.jsp

    Cela marche tres bien sauf que je suis dans l'incapacité de lier une methode de ce bean aux attribut action des commandButton.
    du coup cette classe qui me sert de controller ne me sert plus a grand chose ....

    Au passage j'en profite pour vous demander comment gerer convenablement le modele MVC avec JSF.

    J'ai une classe "View" qui contient les UICompoent lis a la JSP par l'attribut "binding", une classe "Model" qui contient les donnés liés a la JSP par l'attribut "value", et cette fammeuse classe qui me sert de controller dont je comptais lier les methodes aux attributs "action".
    Elle contient egalement 2 membres : View et Model, initialisé par le faces-config.xml a l'aide des managed property.

    Est ce correct ?
    Y a t il meux a faire ?

    Merci.

  2. #2
    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
    Et si tu retire ce moche $ dans le nom du Bean? $ n'est pas autorisé dans les nom de variable en java, et il me semble que les noms des bean doivent respecter les règles du java concernant les noms de variables.

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    ca je veux bien mais sur la javadoc du ViewController il est specifier qu'il faut mapper le nom du bean avec le nom de la JSP.

    Ce mapping doit respecter certains regles definie par une instance de ViewControllerMapper dont l'instance par defaut est DefaultViewcontrollerMapper.

    Cette regle specifie que le nom du Bean doit etre le chemin de la JSP avec des $ en remplacement des /.

    http://shale.apache.org/shale-view/a...ontroller.html

    Ceci dit si ca marche autrement, je suis pas contrariant ^^
    Mais j'ai esayé et yé soui pas arrivé

  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
    Ok, bon la prochaine fois, précise que tu utilise Shale, on peux pas le deviner
    Je dirais dans ce cas, a priori, que ton problème est la présence du l dans "dossier1$mapagel", si on suit les règle mentionnées. Maintenant, je ne connais pas shale.

  5. #5
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    non c'est une erreur de frappe ....

    en meme temps si tu as une autre solution n'utilisant pas shale je suis preneur :p

    La actuelement je suis un peu perdu.
    Je cherche une solution qui marche, qui soit propre et MVC.
    Le concepte de l'interface qui permet au bean de s"inserer dans le cycle de vie de la JSP je trouvais ca plutot interessant mais visiblement ca ne colle pas trop avec nos besoins.

  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
    Le JSF en base est déjà MVC et propre il me semble. Tu définis des bean de model que tu mappe sur des value de composants JSF et tu définis des beans d'action avec des méthodes que tu mappe sur des action de commandButton ou commandLink.

  7. #7
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    ouaip c'est ce que j'ai fait a un moment.

    en fait, au depart, ce qui m'a conduit a faire cela c'est que j'ai des parametres que je transmet par URL et pour y acceder j'ai besoin que le controleur soit en mode request.

    Autre chose : Pour conserver un certain parametrage d'un affichage a l'autre de ma page j'aurais besoin qu'il soit en mode session.....

    Apres disons que le ViewController apporte un sacre plus au niveau gestion.
    J'ai lut aussi qu'il est possible d'implementer sont propre mapper avec le viewcontrollermapper mais je ne sais pas ou le referencer pour qu'il soit pris en compte a la place du defaultviewControllerMapper.

  8. #8
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    bon j'ai fini par trouver comment cela marche :

    Pour que le bean controlleur soit reconnu par JSF, il fait qu'il ai un nom plus "classique" et donc il ne peux plus etre mappé avec le nom de la JSP a moins que la JSP soit a la racine du site.

    Pour beneficier des 2 services (integration dans le cycle de vie de la JSP et utilisation comme controleur dans la JSF en implementant les actions des boutons ...) il faut redefinir le ViewControllerMapper par defaut de Shale dont le role est de mapper le nom du controller avec le chemin de la JSP en remplacant les "/" par des "$".

    Pour ce faire, il faut implementer une classe qui supporte l'interface ViewControllerMapper, c'est a dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class MonMapper implements ViewControllerMapper {
     
    public String mapViewId(String viewID) { 
            if (viewID.equals("/dossier1/mapage.jsp")) { return "mapageController"; }
            return null;
        }
    }
    LA methode mapViewId, sera appelée lors de chaques chargement d'une JSP et renvera le nom du managed-bean qui sert de controlleur. Ainsi on peut utiliser n'importe quel bean du moment qu'il implemente l'interface ViewController.

    Il est possible de definir notre propre regle de mapping, notement en analysant un fichier XML qui permet d'externaliser la configuration.

    Pour referencer notre mapper dans le framework shale en lieu et place du DefaultViewControllerMapper 2 methodes existent :

    1. Declarer un managed Bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <managed-bean>
            <managed-bean-name>org$apache$shale$view$VIEW_MAPPER</managed-bean-name>
            <managed-bean-class>org.exemple.mapper.MonControllerlMapper</managed-bean-class>
            <managed-bean-scope>application</managed-bean-scope>
        </managed-bean>
    2. Definir un context parameter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <context-param>
            <param-name>org.apache.shale.view.VIEW_CONTROLLER_MAPPER</param-name>
            <param-value>org.exemple.popup.PopupSendmailMapper</param-value>
        </context-param>

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

Discussions similaires

  1. [Shale] Utilisation du ViewController
    Par Clorish dans le forum Autres
    Réponses: 1
    Dernier message: 28/07/2009, 17h41
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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