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 :

[JSF][A4J]Image et CSS dans jar


Sujet :

JSF Java

  1. #1
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut [JSF][A4J]Image et CSS dans jar
    Bonjour,
    j'utilise JSF et RichFaces, je souhaite réaliser un genre de bibliothèques de composants pour un ensemble de petites applications.
    Pour gérer l'apparence commune de mes pages, j'ai décidé de créer un jar contenant mes tags et aussi mes fichiers de style et mes images (logo apparaissant dans toutes les pages).
    Pour les styles il n'y a pas de problèmes, j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:loadStyle src="resource:///com/compagny/messtyles.css">
    Par contre pour les images, je ne vois pas ... J'ai essayé en définissant un style comme ceci dans messtyles.css (le fichier logo.jpg se trouve au même niveau dans le jar) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    div#logo {
      background-image: url(logo.jpg);
      width: 150;
      height: 37;
    }
    Ca ne fonctionne pas

    Une autre idée ?

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Hello,

    Nous avions la même problématique sur mon projet : Tous les composants personnels sont stockés dans une librairie - un JAR donc - ainsi que les ressources (CSS, images, etc.)
    Pour réaliser cela, nous avons eu recours à Weblets.

    Dans ma librairie, j'ai un weblets-config.xml qui ressemble à ça :

    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
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <weblets-config xmlns="http://weblets.dev.java.net/config">
        <weblet>
            <weblet-name>bidule</weblet-name>
            <weblet-class>
                net.java.dev.weblets.packaged.PackagedWeblet
            </weblet-class>
            <init-param>
                <param-name>package</param-name>
                <param-value>resources</param-value>
            </init-param>
        </weblet>
        <weblet-mapping>
            <weblet-name>bidule</weblet-name>
            <url-pattern>/chemin/vers/mes/ressources/*</url-pattern>
        </weblet-mapping>
    </weblets-config>



    Pour finir, j'ai ajouté dans le pom.xml (utilisation de Maven 2) de mon WAR les dépendances à Weblet:

    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
     
            <dependency>
                <groupId>net.java.dev.weblets</groupId>
                <artifactId>weblets-api</artifactId>
                <version>0.4</version>
            </dependency>
            <dependency>
                <groupId>net.java.dev.weblets</groupId>
                <artifactId>weblets-impl</artifactId>
                <version>0.4</version>
                <exclusions>
                    <exclusion>
                        <groupId>myfaces</groupId>
                        <artifactId>myfaces-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    Maintenant, dans ma page JSF, si je veux accéder à une image contenue dans ma librairie, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:graphicImage value="weblet://bidule/images/monImage.jpg"/>
    Pour ce qui est du CSS, je suis obligé de bidouiller un peu. Dans mon CSS (contenu dans la librairie en question), si je veux utiliser une image (elle aussi contenue dans ma librarie), je dois faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    .uneClasse {
        ...
        background:url(../images/monImage.jpg.jsf) 0 4px no-repeat;
    }
    Autre problème, c'est que si j'utilise un tag HTML de base (j'utilise Facelets) dans ma page JSF, il faut aussi que je bidouille, par exemple en définissant les CSS utilisées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <link rel="stylesheet" href="#{facesContext.externalContext.request.contextPath}/weblets/bidule/css/global.css.jsf" />
    Voilà. Ce n'est pas une solution parfaite, mais elle est quand même d'un sacré secours !
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut
    Vos templates facelets sont aussi dans le jar ? Moi ça me plairait bien.

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Non, mes templates sont dans la webapp directement.
    Je ne suis vraiment pas sûr que cette technique puisse s'adapter aux templates, même en bidouillant...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  5. #5
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut
    Et bien je viens d'essayer un truc sans y croire du tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ui:composition template="resource:///webresource/default/template.xhtml">
    template.xhtml étant dans le jar.
    Et bien ça marche !

    Si quelqu'un peut m'expliquer ?

  6. #6
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut
    Bon, je crois que le schéma d'url "resource" est géré par JBoss (classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.jboss.net.protocol.resource.Handler
    qui étend
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.net.URLStreamHandler
    ). Donc cela ne fonctionne sans doute pas sur d'autres serveurs (?).
    Je vais tout de même utiliser cette solution est bien pratique et si je dois migrer mon application sur un autre serveur (ce qui est fort peu probable), je tacherais d'ajouter ce handler d'url qui n'est pas bien complexe (recherche d'une resource système dans le ClassLoader) ou de trouver une équivalence.

    Merci beaucoup pour cette discussion très intéressante

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 15
    Points
    15
    Par défaut
    Salut,

    Moi aussi j'utilise RichFaces et j'ai un projet séparé où je stocke les templates et les fichiers CSS et images. Pour servir le tout, j'utilise également Weblets et tout fonctionne bien, à une exception près: Google Chrome. On dirait que Google Chrome n'apprécie pas trop les fichiers CSS servis via Weblets (il ne les utilise pas du tout, n'applique aucun style!).

    Pourtant, il sait bien accéder aux fichiers (j'ai vérifié en tapant l'url et ça fonctionne, j'obtiens bien le css). Est-ce que quelqu'un sait si weblets touche à l'encodage des fichiers? Je ne comprends pas vraiment le problème. J'ai également essayé de spécificer les mime-types dans le fichier de config de weblets, mais rien n'y fait...


    Merci pour votre aide!

    PS: en utilisant <a4j:loadStyle src="resource:///stylenav/css/toponly/menusystem.css" />, là ça fonctionne, donc c'est bien un problème lié à Weblets...

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

Discussions similaires

  1. Les images en CSS dans les mails HTML
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/02/2011, 18h02
  2. placer une image de fond dans un script css
    Par AnDy(yours) dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/05/2007, 13h10
  3. import des css dans les jsf
    Par Alec6 dans le forum JSF
    Réponses: 3
    Dernier message: 04/05/2007, 16h50
  4. [CSS] Image de fond dans un élément <div>
    Par Yogui dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 16/05/2006, 13h05
  5. [CSS] Redimensionner l'image de fond dans un champ input
    Par choubiroute dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/01/2006, 10h25

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