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 :

Migration jsf 2.1.28 => 2.2.x


Sujet :

JSF Java

  1. #1
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut Migration jsf 2.1.28 => 2.2.x
    Bonjour,

    J’essaie de migrer une application entre les deux versions cité plus haut.

    Je rencontre un problème mais je ne trouve pas de solution sur google.


    La partie qui ne marche pas est un chargement de tag via code java.


    Dépendance maven + implémentation identique sur mon serveur (Tomcat 7) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            <dependency>
                <groupId>com.sun.faces</groupId>
                <artifactId>jsf-api</artifactId>
                <version>${jsf.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.sun.faces</groupId>
                <artifactId>jsf-impl</artifactId>
                <version>${jsf.version}</version>
                <scope>provided</scope>
            </dependency>
    Web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	<context-param>
    	  <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    	  <param-value>/META-INF/ndi.taglib.xml</param-value>
    	</context-param>

    La tag-lib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="UTF-8"?>
    <facelet-taglib 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-facelettaglibrary_2_2.xsd" 
    	version="2.2">
    	<library-class>com.x.fwk.web.jsfutils.XCompositeLibrary</library-class>
    </facelet-taglib>
    La classe xCompositeLibrary :
    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
     
    public class XCompositeLibrary implements TagLibrary {
     
    ........
        public XCompositeLibrary() {
     
            TagLibrary loJvsLibrary = new XLibrary();
            // composite library
            TagLibrary loJvsCompositeLibrary = new CompositeComponentTagLibrary(this.NAMESPACE, "common/components");
     
            mcLibraries = new TagLibrary[] {loJvsLibrary, loJvsCompositeLibrary};
     
            LOG.info("Chargement XCompositeLibrary OK"')");
        }
    ..........
    }


    La classe XLibrary :
    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
     
    public class XLibrary extends AbstractTagLibrary {
     
    publicXLibrary() {
    		super(NAMESPACE);
     
    		try {
    			addComponent(.....);
     
    			// handlers
    			addTagHandler(...);
     
     
    			// converters
    			addConverter(....);
     
     
    			// add the functions from JsfFunctions
    			Method[] lcMethods = JsfFunctions.class.getMethods();
    			for (int lnI = 0; lnI < lcMethods.length; lnI++) {
    				if (Modifier.isStatic(lcMethods[lnI].getModifiers())) {
    					addFunction(lcMethods[lnI].getName(), lcMethods[lnI]);
    				}
    			}
     
    			LOG.info("X components library successfully loaded");
    		} catch (Exception loE) {
    			LOG.error("Problem during loading of Xcomponents library : " + loE, loE);
    		}
    	}
     
    }

    Ceci permet ensuite d'utiliser des tag qui appel les fonctions de la classe "JsfFunctions".


    Par exemple dans une page xhtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <ui:composition ....
    xmlns:custom="http://java.sun.com/jsf/X"/>
     
    #{cc.attrs.showLabels == 'true' ? custom:concat('label: "', cc.getLabel(state), '",') : ''}

    Ce bout de code fonctionne en 2.1.28 par contre j'ai le message d'erreur suivant en 2.2.x :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javax.el.ELException: Function 'custom:concat' not found

    Une piste ? des idées ?

  2. #2
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 269
    Points : 434
    Points
    434
    Par défaut
    Bonjour, est tu obligé d'utiliser cette librairie XCompositeLibrary ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Je ne penses pas que le problème vienne de cette class.


    Si je passe par l'autre méthode qui est juste des déclarations dans le taglib.xml ca ne marche pas non plus (même erreur) :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <facelet-taglib version="2.0"
                    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-facelettaglibrary_2_2.xsd">
        <namespace>http://mycomp.com/utils</namespace>
     
        <function>
          <function-name>replace</function-name>
          <function-class>com.x.fwk.web.jsfutils.JsfFunctions</function-class>
          <function-signature>java.lang.String replace(java.lang.String, java.lang.String, java.lang.String)</function-signature>
        </function>
     
    </facelet-taglib>

    J'ai essayé la méthode ci-dessus avec un projet très simple (archetype richfaces 4.5.4 + jsf 2.2.8) et ca fonctionne.

    Du coup, je penses que j'ai un problème de version de library autre que la jsf ?

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Cette ligne m'interpelle, je me demande comment l'interpréteur peut s'en sortir avec les 2 ":"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #{cc.attrs.showLabels == 'true' ? custom:concat('label: "', cc.getLabel(state), '",') : ''}
    Pourquoi prendrait-il le deuxième ":" pour le cas condition non remplie
    Il se pourrait qu'il essaye de l'interpréter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    condition ? custom     :      concat('label:', cc.getLabel(state), ',') ...
               cond ok           cond non ok
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/03/2015, 18h58
  2. Réponses: 0
    Dernier message: 21/04/2011, 12h04
  3. migration de struts vers JSF
    Par karim_sousse dans le forum Struts 1
    Réponses: 2
    Dernier message: 03/02/2009, 14h17
  4. migration de JSF RI 1.1 to myfaces 1.1.5
    Par seddik_saber dans le forum JSF
    Réponses: 1
    Dernier message: 09/06/2008, 17h21
  5. [Visual Web] Migration JSF Creator vers Netbeans 5.5
    Par vsevel dans le forum NetBeans
    Réponses: 2
    Dernier message: 02/11/2006, 11h39

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