//1-initialiser velocity
Velocity.init();
//2-initailiser le contexte
VelocityContext context = new VelocityContext();
//3- mettre les donnees dans le contexte
context.put("nom","Enwoo");
context.put("typeAbonnement","Forfait 4 heure");
context.put("dateDuMail",new Date());
//4-choisir un fichier template au format velocity
template = Velocity.getTemplate(templateName);
//5-merger le template
template.merge(context,writer);
//6-ecrire le fichier template
il faut respecter la syntaxe velocity, mais simplment les variable doive avoir un $MaVariable devant
/************************************************/
/* un extrait complet et son fichier template */
/************************************************/
private void genererConfiguration() throws Exception
{
HashMap config = new HashMap();
try {
//1 initialize context
Velocity.init();
} catch (Exception e) {
System.err.println("Erreur a l'initialisation");
}
// retrieve and put data in context
VelocityContext context = new VelocityContext();
String iniFile = "ressources/sidef.ini";
LineNumberReader reader = null;
Pattern pValue = Pattern.compile("=(.)+");
Pattern pKey = Pattern.compile("(.)+=");
try {
reader = new LineNumberReader(new FileReader(iniFile));
String line = null;
String value = null;
String key = null;
Matcher matcherValue = null;
Matcher matcherKey = null;
while((line = reader.readLine()) != null)
{
if(line.length() > 0)
{
System.out.println("lecture de [" + line + "]");
matcherValue = pValue.matcher(line);
matcherKey= pKey.matcher(line);
while(matcherValue.find() && matcherKey.find())
{
key = line.substring(matcherKey.start(),matcherKey.end()-1);
value = line.substring(matcherValue.start()+1,matcherValue.end());
context.put(key,value);
}
}
}
} catch (FileNotFoundException e2) {
System.err.println("Erreur de lectur'e du fichier ini [" + iniFile + "]");
e2.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// choose template
Template template = null;
String templateName = "src/ressources/prod.vm";
try {
template = Velocity.getTemplate(templateName);
} catch (ResourceNotFoundException e) {
System.err.println("Template non trouve [" + templateName + "]");
} catch (ParseErrorException e) {
System.err.println("Template non conforme [" + templateName + "]");
} catch (Exception e) {
System.err.println("Exception innattendue [" + e.getMessage() + "]");
}
// merge template
FileWriter writer = null;
String fileName = "prod.conf";
try
{
File file = new File(fileName);
if(file.exists())
{
file.delete();
}
writer = new FileWriter(fileName);
try {
template.merge(context,writer);
writer.flush();
writer.close();
} catch (ResourceNotFoundException e) {
System.err.println("Erreur lors du merge du template");
e.printStackTrace();
} catch (ParseErrorException e) {
System.err.println("Erreur lors du merge du template");
} catch (MethodInvocationException e) {
System.err.println("Erreur lors du merge du template");
} catch (IOException e) {
System.err.println("Erreur lors du merge du template");
}
}
catch (IOException e1)
{
System.err.println("Erreur IO lors de l'ecriture du fichier");
}
finally
{
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/************************************************/
/* le fichier template associe email.vm */
/************************************************/
Bonjour $nom,
Votre formule d'abonnement est à compté du $dateDuMail, un abonnement du type $typeAbonnement.
Cordialement votre service Client.
lundi 7 septembre 2009
java : template velocity
Voici une manière simple et puissante (boucle possible, conidtion, etc ... ) de générer des mails, ou des fichiers customisés via un système de template et le remplacement "en live" par les valeurs des variables. Voici la librairie apache Velocity :
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire