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 :

[binding] Associer un composant JSF d'une page JSP à un attribut du bean


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Par défaut [binding] Associer un composant JSF d'une page JSP à un attribut du bean
    Bonjour

    Je suis en train de construire une application JSF avec Maven. Je ne parviens pas à associer un composant graphique d'une page JSP à un attribut d'un backing bean. J'obtiens une erreur à la compilation avec Maven.

    Voici la partie de ma JSP concernée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    			<td><rich:panelMenu binding="#{userBean.panelMenu}" style="width:200px" mode="ajax" iconExpandedGroup="disc" iconCollapsedGroup="disc"
    				iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right" iconCollapsedTopGroup="chevronDown" /></td>

    Voici le code de mon backingBean :

    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
     
    import javax.faces.application.Application;
    import javax.faces.context.FacesContext;
     
    import org.richfaces.component.UIPanelMenu;
    import org.richfaces.component.UIPanelMenuGroup;
     
    public class UserBean {
     
    	private UIPanelMenu panelMenu;
     
    	private String login;
     
    	private String password;
     
    	public UserBean() {
    		this.buildPanelMenu();
    	}
     
    	private void buildPanelMenu() {
    		Application application = FacesContext.getCurrentInstance().getApplication();
    		this.panelMenu = (UIPanelMenu) application.createComponent(UIPanelMenu.COMPONENT_TYPE);
            ...
            }
    }
    Tout cela compile très bien sous Eclipse. Mais quand je fais un mvn clean install, j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    .....\user\UserBean.java:[23,44] cannot access javax.el.ValueExpression
    class file for javax.el.ValueExpression not found
                    this.panelMenu = (UIPanelMenu) application.createComponent(UIPanelMenu.COMPONENT_TYPE);
    Qu'est ce que c'est ce javax.el.ValueExpression ? Pourquoi Maven me le réclame-t-il alors que rien dans mon backing bean ne le sollicite (ça compile sous Eclipse...) ?

    Merci pour votre aide.

  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 : 46
    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
    UIPanelMenu l'utilise vraisemblablement. Tu utilise visiblement maven2, ce qui m'étonne, c'est qu'il devrait normalement télécharger les dépendance récursive et donc, avec richfaces, les package correspondant aux elExpression auraient du être aussi téléchager. Tu n'as pas mis d'exclusion dans ton pom.xml?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Par défaut
    J'ai oublié de donner mon pom.xml.
    Pardon. Le voici donc. Il ne me semble pas avoir mis d'exclusion.

    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
     
    ...
    		<!-- Spring -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring</artifactId>
    			<version>2.5.4</version>
    		</dependency>
    		<!-- JSTL -->
    		<dependency>
    			<groupId>jstl</groupId>
    			<artifactId>jstl</artifactId>
    			<version>1.1.2</version>
    		</dependency>
    		<dependency>
    			<groupId>taglibs</groupId>
    			<artifactId>standard</artifactId>
    			<version>1.1.2</version>
    		</dependency>
     
    		<!-- Implementation de JSF -->
    		<dependency>
    			<groupId>org.apache.myfaces.core</groupId>
    			<artifactId>myfaces-api</artifactId>
    			<version>1.2.3</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.myfaces.core</groupId>
    			<artifactId>myfaces-impl</artifactId>
    			<version>1.2.3</version>
    		</dependency>
     
    		<!-- RichFaces -->
    		<dependency>
    			<groupId>org.richfaces.ui</groupId>
    			<artifactId>richfaces-ui</artifactId>
    			<version>3.2.0.GA</version>
    		</dependency>
     
    	<!-- BUILD -->
    	<build>
    		<finalName>libras</finalName>
    		<!--
    			Pour lancer Jetty en ligne de commande maven. Jetty se reloade selon un intervale de temps donné. Pratique : pas besoin de redéployer l'appli pour
    			voir les modifs effectuées sur les pages jsp sur le navigateur
    		-->
    		<plugins>
    			<plugin>
    				<groupId>org.mortbay.jetty</groupId>
    				<artifactId>maven-jetty-plugin</artifactId>
    				<configuration>
    					<reload>automatic</reload>
    					<scanIntervalSeconds>10</scanIntervalSeconds>
     
    					<!-- Configure the webapp -->
    					<contextPath>/libras</contextPath>
    					<tmpDir>target/jettyTmpDir</tmpDir>
     
    					<!-- configure the container -->
    					<connectors>
    						<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
    							<port>9090</port>
    							<maxIdleTime>60000</maxIdleTime>
    						</connector>
    					</connectors>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>

    Petite précision, j'utilse le plugin maven jetty (mvn jetty:run) pour tester mon appli en ligne.

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    ajoute el-api

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <dependency>
    			<groupId>javax.el</groupId>
    			<artifactId>el-api</artifactId>
    			<version>1.0</version>
    			<scope>provided</scope>
    </dependency>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Par défaut
    Bon j'ai trouvé.

    Etant donné que Jetty (le même problème survient avec Tomcat 6.0) possède les jar Servlet et JSP, je ne les ai pas mis dans mon pom. Or, il semblerait que pour compilé il faille javax.el.ValueExpression. Cet objet ce trouve dans le jar JSP. Donc j'ai ajouté Servlet et JAR dans mon pom.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    		<!-- Servlet et JSP -->
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>servlet-api</artifactId>
    			<version>2.5</version>
     
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet.jsp</groupId>
    			<artifactId>jsp-api</artifactId>
    			<version>2.1</version>
     
    		</dependency>
    Or, tel quel mon appli est déployée avec les jar Servlet et JSP. Et cela crée un conflit avec les jar Servlet et JSP déjà fournis par Jetty. Il faut donc ajouter un <scope>provided</scope> à ces jar. De cette façon il sont utilisés par Maven pour compiler mais ne sont pas inclus dans l'application lors du déploiement (dans le .war quoi...).

    Voilà ! Comme ça, ça fonctionne.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Par défaut
    Désolé Sniper37, t'as du poster ta réponse pendant que je postais la mienne. Merci pour ta réponse. C'est effectivement ce qu'il faut faire. Mais je pense qu'ajouter les jar Servlet et JSP en scope provided donne encore plus de possibilité pour mon code même si je ne suis pas censé manipuler ces APIs en direct vu que je fais du JSF.

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par El Saigneur Voir le message
    Désolé Sniper37, t'as du poster ta réponse pendant que je postais la mienne. Merci pour ta réponse. C'est effectivement ce qu'il faut faire. Mais je pense qu'ajouter les jar Servlet et JSP en scope provided donne encore plus de possibilité pour mon code même si je ne suis pas censé manipuler ces APIs en direct vu que je fais du JSF.
    ouii avec le scope provided ce qui permet de ne pas les ajouter lors du deployement..

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

Discussions similaires

  1. Remplacement page JSF par une page JSP
    Par guillaumerivière7 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/03/2011, 14h44
  2. Réponses: 1
    Dernier message: 20/03/2009, 18h17
  3. Réponses: 7
    Dernier message: 14/05/2008, 21h50
  4. inserer un composant jsf dans une page PHP
    Par !NyThaX&& dans le forum JSF
    Réponses: 8
    Dernier message: 22/11/2007, 07h28
  5. [EJB+JSP+Tomcat] Appel d'une page JSP à partir d'un bean
    Par Hakkou dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 02/06/2004, 15h26

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