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 :

Problème d'accessibilité avec le design patterns MVC


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 22
    Points
    22
    Par défaut Problème d'accessibilité avec le design patterns MVC
    Bonjour,

    Je suis encore novice en JSF et j'ai quelques problèmes d'accessibilités dans mes pages JSF.

    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
    
    <%@ page contentType="text/html" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core" %>
    
    <core:view>
        <html:form>
            <html:dataTable value="#{catalogCtrl.model.datas.}">
                <html:column>
                    <html:outputText></html:outputText>
                </html:column>
            </html:dataTable>
        </html:form>
    </core:view>
    catalogCtrl.model.datas. devrait me donner l'accès a un de mes beans, mais il ne le fait pas (Erreur HTTP 500). Vous pouvez voir dans le constructeur de mon controller que j'instancie bien un bean "Catalog" --> this.getModel().setDatas(new Catalog());

    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
     
    /*
     * Model.java
     *
     * Created on 23 juillet 2007, 22:02
     *
     */
     
    package be.virtualshop.mvc;
     
    /**
     *
     * @author Benetti Andrea
     */
    public interface Model {
     
        public Object getDatas();
     
        public void setDatas(Object object);
     
    }
    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
     
    /*
     * SimpleModel.java
     *
     * Created on 23 juillet 2007, 22:18
     *
     */
     
    package be.virtualshop.mvc;
     
    /**
     *
     * @author Benetti Andrea
     */
    public class SimpleModel implements Model{
     
        private Object datas;
     
        /** Creates a new instance of SimpleModel */
        public SimpleModel() {
        }
     
        public Object getDatas() {
            return datas;
        }
     
        public void setDatas(Object datas) {
            this.datas = datas;
        }
     
    }
    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
     
    /*
     * Controller.java
     *
     * Created on 23 juillet 2007, 22:04
     *
     */
     
    package be.virtualshop.mvc;
     
    /**
     *
     * @author Benetti Andrea
     */
    public interface Controller {
     
        public Model getModel();
     
        public View getView();
     
    }
    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
    46
    
    /*
     * CatalogListController.java
     *
     * Created on 23 juillet 2007, 22:38
     *
     */
    
    package be.virtualshop.mvc;
    
    import be.virtualshop.bean.Catalog;
    
    /**
     *
     * @author Benetti Andrea
     */
    public class CatalogListController implements Controller{
        
        private Model model;
        private View view;
        
        /** Creates a new instance of CatalogListController */
        public CatalogListController() {
            this.model = new SimpleModel();
            this.view = new ListView();
            this.getModel().setDatas(new Catalog());
        }
    
        public Model getModel() {
            return model;
        }
    
        public void setModel(Model model) {
            this.model = model;
        }
    
        public View getView() {
            return view;
        }
    
        public void setView(View view) {
            this.view = view;
        }
        
    }
    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
     
    <?xml version='1.0' encoding='UTF-8'?>
     
     
    <!DOCTYPE faces-config PUBLIC
      "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
      "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
     
    <!-- =========== FULL CONFIGURATION FILE ================================== -->
     
    <faces-config>
     
        <managed-bean>
            <managed-bean-name>catalogCtrl</managed-bean-name>
            <managed-bean-class>be.virtualshop.mvc.CatalogListController</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>
     
    </faces-config>
    Bizar non ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Donne plus de détail sur l'erreur, mais a priori moi je place mes beans view et model en managed bean, et en managed-properties du bean controller. Tout en laissant le constructeur du controller vide.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 31
    Points : 41
    Points
    41
    Par défaut
    Que fait le point derrière datas ?

    <html:dataTable value="#{catalogCtrl.model.datas.}">

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par mad-math
    Donne plus de détail sur l'erreur, mais a priori moi je place mes beans view et model en managed bean, et en managed-properties du bean controller. Tout en laissant le constructeur du controller vide.
    Merci du conseil, je te montre ici le résultat de l'erreur lorsque j'essaye d'acceder a une list articles de ma classe Catalog. En faite pour le moment je suis le tutoriel des bases du JSF disponible sur developpez.com et il ne parle pas des managed properties , bref en gros il le gère comme je suis entrain de faire, sauf que j'ai surment du oublier un truc mais quoi

    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
     
     
    <%@ page contentType="text/html" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core" %>
     
    <core:view>
        <html:form>
            <html:dataTable value="#{catalogCtrl.model.datas.articles}">
                <html:column>
                    <html:outputText></html:outputText>
                </html:column>
            </html:dataTable>
        </html:form>
    </core:view>
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Etat HTTP 500 - 
    
    type Rapport d'exception
    message 
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
    exception 
    org.apache.jasper.JasperException: javax.servlet.jsp.JspException: javax.faces.FacesException: javax.faces.FacesException: Can't instantiate class: 'be.virtualshop.mvc.CatalogListController'.. class be.virtualshop.mvc.CatalogListController : java.lang.NullPointerException
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
    	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
    	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    cause mère 
    javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.faces.FacesException: javax.faces.FacesException: Can't instantiate class: 'be.virtualshop.mvc.CatalogListController'.. class be.virtualshop.mvc.CatalogListController : java.lang.NullPointerException
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:854)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    	org.apache.jsp.data_002dtable_002dmvc_jsp._jspService(data_002dtable_002dmvc_jsp.java:75)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
    	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
    	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    cause mère 
    javax.faces.el.EvaluationException: javax.faces.FacesException: javax.faces.FacesException: Can't instantiate class: 'be.virtualshop.mvc.CatalogListController'.. class be.virtualshop.mvc.CatalogListController : java.lang.NullPointerException
    	com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:206)
    	com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
    	javax.faces.component.UIData.getValue(UIData.java:527)
    	javax.faces.component.UIData.getDataModel(UIData.java:856)
    	javax.faces.component.UIData.setRowIndex(UIData.java:379)
    	com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:65)
    	javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:683)
    	javax.faces.component.UIData.encodeBegin(UIData.java:681)
    	javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:591)
    	javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:543)
    	com.sun.faces.taglib.html_basic.DataTableTag.doEndTag(DataTableTag.java:491)
    	org.apache.jsp.data_002dtable_002dmvc_jsp._jspx_meth_html_dataTable_0(data_002dtable_002dmvc_jsp.java:162)
    	org.apache.jsp.data_002dtable_002dmvc_jsp._jspx_meth_html_form_0(data_002dtable_002dmvc_jsp.java:131)
    	org.apache.jsp.data_002dtable_002dmvc_jsp._jspx_meth_core_view_0(data_002dtable_002dmvc_jsp.java:100)
    	org.apache.jsp.data_002dtable_002dmvc_jsp._jspService(data_002dtable_002dmvc_jsp.java:68)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
    	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
    	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.17.
    Apache Tomcat/5.5.17
    Je joins aussi ma classe Catalog pour vous montrer de quoi il en retourne

    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
    46
    47
     
     
    /*
     * Catalog.java
     *
     * Created on 23 juillet 2007, 21:35
     *
     */
     
    package be.virtualshop.bean;
     
    import java.util.List;
     
    /**
     *
     * @author Benetti Andrea
     */
    public class Catalog {
     
        private long id;
     
        private List articles;
     
        /** Creates a new instance of Catalog */
        public Catalog() {
            this.articles.add(new Audio("RATM"));
            this.articles.add(new Audio("Battle of los angeles"));
            this.articles.add(new Audio("Fernand Réno"));
        }
     
        public long getId() {
            return id;
        }
     
        private void setId(long id) {
            this.id = id;
        }
     
        public List getArticles() {
            return articles;
        }
     
        public void setArticles(List articles) {
            this.articles = articles;
        }
     
    }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Un début de réponse, je n'ai plus de problème pour passer par mon controller au niveau de mon application. Par contre netbean trace mal les attributs ou méthodes soumis au polymorphisme :

    exemple : une classe Model instancié avec SimpleModel ne me donnera pas les méthode associé à SimpleModel.

    Si quelqu'un à déjà eu ce problème.

    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
     
     
    <%@ page contentType="text/html" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core" %>
     
    <core:view>
        <html:form>
            <html:dataTable binding="#{catalogCtrl.view.dataTable}" value="#{catalogCtrl.model.datas.articles}" var="article">
                <html:column>
                    <html:outputText value="#{article.caption}"></html:outputText>
                </html:column>
            </html:dataTable>
        </html:form>
    </core:view>
    pour catalogCtrl.view.dataTable , j'ai du taper à la main .dataTable . Idem pour catalogCtrl.model.datas.articles , .article et aussi article.caption , .caption

    Donc j'aimerai retrouver le confort d'un bon ide


    Sinon mon problème a été résolu simplement dans le fichier Catalog

    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
    46
    47
    48
    49
    50
    51
    52
    
    /*
     * Catalog.java
     *
     * Created on 23 juillet 2007, 21:35
     *
     */
    
    package be.virtualshop.bean;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    import java.util.List;
    import java.util.ListIterator;
    
    /**
     *
     * @author Benetti Andrea
     */
    public class Catalog {
        
        private long id;
        
        private List articles;
        
        /** Creates a new instance of Catalog */
        public Catalog() {
            this.articles = new ArrayList();
            this.articles.add(new Audio("RATM"));
            this.articles.add(new Audio("Battle of los angeles"));
            this.articles.add(new Audio("Fernand Réno"));
        }
    
        public long getId() {
            return id;
        }
    
        private void setId(long id) {
            this.id = id;
        }
    
        public List getArticles() {
            return articles;
        }
    
        public void setArticles(List articles) {
            this.articles = articles;
        }
        
    }
    J'étais surment fatigué pour ne pas instancier ma liste

    Sinon le fichier faces-config.xml n'a pas eu besoin d'être changé.

    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
     
     
    <?xml version='1.0' encoding='UTF-8'?>
     
     
    <!DOCTYPE faces-config PUBLIC
      "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
      "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
     
    <!-- =========== FULL CONFIGURATION FILE ================================== -->
     
    <faces-config>
     
        <managed-bean>
            <managed-bean-name>catalogCtrl</managed-bean-name>
            <managed-bean-class>be.virtualshop.mvc.CatalogListController</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>
     
    </faces-config>

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    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
    46
    47
     
     
    /*
     * Catalog.java
     *
     * Created on 23 juillet 2007, 21:35
     *
     */
     
    package be.virtualshop.bean;
     
    import java.util.List;
     
    /**
     *
     * @author Benetti Andrea
     */
    public class Catalog {
     
        private long id;
     
        private List articles;
     
        /** Creates a new instance of Catalog */
        public Catalog() {
            this.articles.add(new Audio("RATM"));
            this.articles.add(new Audio("Battle of los angeles"));
            this.articles.add(new Audio("Fernand Réno"));
        }
     
        public long getId() {
            return id;
        }
     
        private void setId(long id) {
            this.id = id;
        }
     
        public List getArticles() {
            return articles;
        }
     
        public void setArticles(List articles) {
            this.articles = articles;
        }
     
    }
    Il faudrai peut-être penser à instancier ta liste avant de la remplir...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        public Catalog() {
            this.articles = new ArrayList();
            this.articles.add(new Audio("RATM"));
            this.articles.add(new Audio("Battle of los angeles"));
            this.articles.add(new Audio("Fernand Réno"));
        }

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

Discussions similaires

  1. Problème avec le design pattern visitor
    Par RT222 dans le forum Langage
    Réponses: 5
    Dernier message: 13/05/2012, 20h28
  2. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  3. Problèmes d'accents avec Workflow designer
    Par Barsy dans le forum SharePoint
    Réponses: 1
    Dernier message: 09/01/2009, 11h16
  4. [Utilisation] Problème de connexion avec Altium designer
    Par zodd dans le forum Subversion
    Réponses: 0
    Dernier message: 20/10/2008, 16h41
  5. [WSS] Probléme: Code Behind avec SharePoint Designer
    Par zghidi dans le forum SharePoint
    Réponses: 3
    Dernier message: 28/01/2008, 08h18

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