La vélocité, les différents chemins d'accès du modèle
Personne ne sait si il est possible d'obtenir des modèles à partir des chemins différents avec la vitesse? Après l'initialisation de la Vitesse refuse de modifier le fichier".de la ressource.loader.chemin d'accès".
C'est mon code:
public Generator(){
Properties p = new Properties();
p.setProperty("resource.loader", "file");
p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
p.setProperty("file.resource.loader.path", "");
Velocity.init(p);
}
Les modèles peuvent être situés à des emplacements différents ( l'utilisateur peut sélectionner l'un avec une boîte de dialogue de fichier ). J'ai donc ce code lors de l'extraction du modèle de vitesse
private Template fetch (String templatePath) {
out_println("Initializing Velocity core...");
int end = templatePath.lastIndexOf(File.separator);
Properties p = new Properties();
p.setProperty("file.resource.loader.path", templatePath.substring(0, end));
Velocity.init(p);
return Velocity.getTemplate(templatePath.substring(end+1));
}
Ce n'est pas de travail. Il semble qu'une fois que la Vitesse est initialisé, il ne peut pas être réinitialisé avec des propriétés différentes. Toutes les suggestions sur la façon de résoudre ce problème?
Possible le flux de Programme:
- Utilisateur sélectionne le groupe qui doit être rempli dans le modèle
- Utilisateur sélectionne un modèle à utiliser (peut être situé n'importe où sur le disque dur)
- Utilisateur appuie sur générer
OriginalL'auteur Arninja | 2012-10-01
Vous devez vous connecter pour publier un commentaire.
Vitesse peut être utilisé de deux façons: la singleton modèle ou de l'instance séparée modèle. Vous êtes actuellement en utilisant le singleton modèle dans lequel une seule instance de la Vitesse du moteur dans la JVM est autorisé.
Au lieu de cela, vous devez utiliser l'instance séparée modèle qui vous permet de créer plusieurs instances de la Vitesse dans la même JVM afin de soutenir les différents modèle de répertoires.
OriginalL'auteur dogbane
Considérer au lieu d'utiliser un singleton
Velocity
classe la création et l'initialisation de nouvelles VelocityEngine avant l'étape 3.OriginalL'auteur Vadzim
Ajoutant des points ci-dessus:
Même si l'on est à l'aide de non-singleton le modèle que j'ai.e à l'aide de
VelocityEngine
objet. Plusieurs chemins d'accès peuvent être configurés en donnant des valeurs séparées par des virgules à la propriété.Dans un tel cas, la vélocité, le moteur de rechercher pour modèle dans path1 d'abord, puis dans path2
OriginalL'auteur devaj
Dans mon cas, je suis en utilisant la Vitesse avec des Servlets dans une Éclipse de Projet Web Dynamique.
Je n'ai pas pu réinitialiser le chemin, mais j'ai pu mettre un sous-répertoire dans /WebContent dossier et de les organiser mes modèles de cette façon... et ont imbriquée des sous-répertoires.
Cette solution simple a tous j'ai besoin ... n'a pas besoin de jouer avec la vitesse.propriétés web.xml ou les configurer par programmation (dans chaque cas, aucune de ces approches n'a fonctionné pour moi, malheureusement, j'ai essayé).
Remarque que quand je fais le modèle comprend avec #parse(..) de commande, j'ai besoin d'utiliser le même préfixe de chemin à l'intérieur du modèle .fichier de machine virtuelle comme je l'ai fait dans l'exemple de code pour ma servlet.
OriginalL'auteur Gene Bo