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

Documents Java Discussion :

[RTFTemplate] conditions et remarques


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Par défaut [RTFTemplate] conditions et remarques
    Bonjour,

    J'utilise RFTTemplate pour gérer mes modèles de documents (avec le moteur Velocity). D'ailleurs au passage, je trouve cet outil simple à utiliser et efficace. Le site est également bien documenté donc merci pour tout ce travail des developpeurs .

    Par ailleurs, je souhaiterais utiliser des conditions dans RTFTemplate. Pourriez-vous m'indiquer la meilleure piste à suivre ? Je ne sais pas si c'est possible mais l'idéal serait de gérer les conditions un peu comme les boucles (avec un signet depuis la macro RTFTemplate et défini dans le xml comme un IF_i). Cela permettrait aux utilisateurs d'ajouter des IF sans avoir a ajouter des signets "à la main".

    De plus, j'ai une autre remarque qui concerne la gestion des images dynamiques. J'utilise la méthode indiquée sur le site c'est à dire que j'envoie à mon template un objet de type FileInputSteam à mon contexte et j'utilise ce champ dans le modèle (par ex $img_stream). Cette méthode fonctionne parfaitement si j'utilise une seule fois le mergefield où j'ai mon FileInputSteam dans le template. Par contre, si je réutilise $img_stream une seconde fois (ou plus) dans le template l'image n'est pas réaffichée. Est-ce normal ? Il y t-il une solution de contournement ?

    Merci à tous.

  2. #2
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonsoir themad,

    J'utilise RFTTemplate pour gérer mes modèles de documents (avec le moteur Velocity). D'ailleurs au passage, je trouve cet outil simple à utiliser et efficace. Le site est également bien documenté donc merci pour tout ce travail des developpeurs .
    Merci et je suis ravi que la doc te convienne.

    Par ailleurs, je souhaiterais utiliser des conditions dans RTFTemplate. Pourriez-vous m'indiquer la meilleure piste à suivre ? Je ne sais pas si c'est possible mais l'idéal serait de gérer les conditions un peu comme les boucles (avec un signet depuis la macro RTFTemplate et défini dans le xml comme un IF_i). Cela permettrait aux utilisateurs d'ajouter des IF sans avoir a ajouter des signets "à la main".
    Je n'en ai parle sur le site de RTFtemplate mais j'avais commencé à implementer ton idée mais je n'ai pas fait beaucoup de test. Tu as un exemple dans la distribution rtftemplate-usecases-1.0.1-b14 usecases\models\condition/condition.rtf pour le model et src\main\java\net\sourceforge\rtf\usecases\condition.

    De plus, j'ai une autre remarque qui concerne la gestion des images dynamiques. J'utilise la méthode indiquée sur le site c'est à dire que j'envoie à mon template un objet de type FileInputSteam à mon contexte et j'utilise ce champ dans le modèle (par ex $img_stream). Cette méthode fonctionne parfaitement si j'utilise une seule fois le mergefield où j'ai mon FileInputSteam dans le template. Par contre, si je réutilise $img_stream une seconde fois (ou plus) dans le template l'image n'est pas réaffichée. Est-ce normal ?
    Oui c'est normal. C'est le fonctionnement d'un InputStream. une fois lu, il ne peut pas etre relu.

    Il y t-il une solution de contournement ?
    En fait pour que ca marche, il faut que ton getter cree un nouvel InputStream. Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    public class MyModel {
     
         public InputStream getImage() {
            return new FileInputStream(...);
         }
    }
    Angelo

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Par défaut
    Citation Envoyé par azerr Voir le message
    Bonsoir themad,



    Merci et je suis ravi que la doc te convienne.


    Je n'en ai parle sur le site de RTFtemplate mais j'avais commencé à implementer ton idée mais je n'ai pas fait beaucoup de test. Tu as un exemple dans la distribution rtftemplate-usecases-1.0.1-b14 usecases\models\condition/condition.rtf pour le model et src\main\java\net\sourceforge\rtf\usecases\condition.



    Oui c'est normal. C'est le fonctionnement d'un InputStream. une fois lu, il ne peut pas etre relu.



    En fait pour que ca marche, il faut que ton getter cree un nouvel InputStream. Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    public class MyModel {
     
         public InputStream getImage() {
            return new FileInputStream(...);
         }
    }
    Angelo
    Entendu, c'est noté ! Je regarde tout ça et je poste les retours dès que possible.

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Par défaut
    Citation Envoyé par azerr Voir le message
    Bonsoir themad,



    Merci et je suis ravi que la doc te convienne.


    Je n'en ai parle sur le site de RTFtemplate mais j'avais commencé à implementer ton idée mais je n'ai pas fait beaucoup de test. Tu as un exemple dans la distribution rtftemplate-usecases-1.0.1-b14 usecases\models\condition/condition.rtf pour le model et src\main\java\net\sourceforge\rtf\usecases\condition.



    Oui c'est normal. C'est le fonctionnement d'un InputStream. une fois lu, il ne peut pas etre relu.



    En fait pour que ca marche, il faut que ton getter cree un nouvel InputStream. Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    public class MyModel {
     
         public InputStream getImage() {
            return new FileInputStream(...);
         }
    }
    Angelo
    Premier retours.

    1) En ce qui concerne la réutilisation d'une image, la solution proposée fonctionne à savoir passer par un getter qui crer un nouvel InputStream.
    Exemple :

    La classe Project et le getter getImg() :

    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
    public class Project {
    	public Project(String name){
    		this.name = name;
    	}
    	public Project(String name, String img){
    		this.name = name;
    		this.img = img;
    	}
    	private String name;
    	private String img;
    	public String getName() {
    		return name;
    	}
     
    	public void setName(String name) {
    		this.name = name;
    	}
     
    	public FileInputStream getImg() throws FileNotFoundException {
    		return new FileInputStream(new File(img));
    	}
     
    	public void setImg(String img) {
    		this.img = img;
    	}
    }
    Ensuite dans le fichier fields.xml on a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    	<mergefield>
    		<list>false</list>
    		<name>$project.Name</name>
    		<description><![CDATA[Name of the project]]></description>
    	</mergefield>
    	<mergefield>
    		<list>false</list>
    		<name>$project.Img</name>
    		<description><![CDATA[Dynamique image (multiple use!)]]></description>
    	</mergefield>
    ...
    Dans le contexte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rtfTemplate.put("project", new Project("Jakarta Velocity project","img/img_stream.jpg"));
    Et dans le template, il est possible d'utiliser plusieurs fois le mergefield vers l'image.

    2) Concernant les IF. La solution mentionnée n'a pas l'air de fonctionner parfaitement.
    Dans le fichier cité (condition.rtf) :
    * Si le nom du projet n'est pas vide -> le rendu du document final est correct et le nom du projet est affiché en vert
    * Si le nom du projet est vide -> le rendu du document final est incorrect (à la place du champ nom du projet qui est vide, on observe des signets et un retour à la ligne) mais le nom du projet s'affiche bien en rouge

    Sais-tu d'où peut venir ce problème ?

    Par ailleurs, est-il possible de redéfinir/surcharger un template engine pour Velocity ? Une idée pourrait être avec la syntaxe suivante avec les IF :
    #If(project.name="Jakarta Velocity")#
    Montexte1
    #else#
    Montexte2
    #endif#

  5. #5
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour

    1) En ce qui concerne la réutilisation d'une image, la solution proposée fonctionne à savoir passer par un getter qui crer un nouvel InputStream.
    Je suis ravi que la solution fonctionne.

    2) Concernant les IF. La solution mentionnée n'a pas l'air de fonctionner parfaitement.
    C'est la derniere fonctionnalité que j'avais faite dans RTFTemplate mais je n'ai pas poussé les tests tres loin, c'est aussi pour ca qu eje n'en parle pas sur le site.

    Aujourd'hui j en epeu xmalheursement plus consacrer de temps a RTFtemplate car je le consacre a TK-UI et Akrogen.

    J'avais tenté de rendre RTFTemplate le plus modulaire possible, donc il est possible d'implementer son propre moteur de template et de l'utiliser dans RTFtemplate (je croies que j'ai tout redige sur le site).

    La il va falloir mettre les mains dans le camboui.

    Si jamais tu y arrives et que tu souhaites contribuer, je pourrais integrer ton code et faire une nouvelle version de RTFTemplate.

    Bon courage.

    Angelo

Discussions similaires

  1. [RTFTemplate] Gestion des conditions
    Par gugus95 dans le forum Documents
    Réponses: 1
    Dernier message: 08/09/2009, 21h03
  2. [RTFTemplate] Boucles et conditions
    Par Big K. dans le forum Documents
    Réponses: 1
    Dernier message: 16/09/2008, 16h26
  3. Remerciements, remarques, commentaires, propositions
    Par Jérôme Lambert dans le forum Général Dotnet
    Réponses: 80
    Dernier message: 15/08/2008, 20h27
  4. Condition et contenu TImage
    Par Detlev_linux dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2003, 01h00
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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