2017-08-23 2 views
3

J'ai un fichier de modèle ftl stocké dans le référentiel alfresco. Le chemin de ce fichier est: /app:company_home/app:dictionary/cm:StarXpert_x0020_Workflow/cm:templates/cm:contentModelTemplate.ftlCharger un fichier de modèle FTL à partir du référentiel alfresco

Je souhaite utiliser ce fichier FTL pour créer un fichier XML. Dans mon contrôleur webscript java, je veux obtenir le fichier FTL, j'ai utilisé de nombreuses méthodes pour y parvenir, mais rien ne fonctionne. J'ai essayé ce code:

Template template=cfg.getTemplate("PATH:\"/app:company_home/app:dictionary/cm:StarXpert_x0020_Workflow/cm:templates/cm:contentModelTemplate.ftl\""); 

Mais je reçois toujours cette erreur:

java.io.FileNotFoundException: Template "contentModelTemplate.ftl" not found

J'ai aussi essayé d'obtenir le modèle en passant son nodeRef comme référence à la méthode getTemplate(), mais aussi ce n'est pas des œuvres .

Y a-t-il quelqu'un qui l'a déjà fait? Merci pour tout.

+0

Où trouvez-vous ce service cfg? Je suppose que c'est un service racine de script? – Akah

+0

Non ce n'est pas un service en plein air, j'ai utilisé l'API freemaker pour gérer mon template mais je ne peux pas charger le fichier template. Je suppose que 'getTemplate' ne comprend pas les chemins d'Alfresco, donc j'ai déjà l'erreur – nmalloul

Répondre

0

Vous devez utiliser serachService pour récupérer le fichier qui se trouve dans le dépôt alfresco. Le lien ci-dessous vous aidera à utiliser le service de recherche.

Alfresco Solr SearchService.query() error parsing Xpath

+0

Le problème est que la méthode' getTemplate() 'accepte uniquement le nom du template comme paramètre, donc je ne peux pas utiliser' Path' en tant que paramètre de cette méthode – nmalloul

+0

Vous n'avez pas besoin d'utiliser cfg.getTemplate.En savoir plus Veuillez jeter un coup d'œil à la réponse donnée par Jeff. –

4

Si l'objectif est d'avoir votre script répondre avec le fichier XML transformé web, alors pourquoi ne pas tirer parti du web script lui-même pour faire cette transformation? Pour ce faire, déplacez le modèle Freemarker de son emplacement actuel dans le dictionnaire de données pour qu'il fasse partie de votre script Web (je ne sais pas si vous utilisez des scripts Web déployés par référentiel ou des scripts Web déployés par chemin de classe). pas faire une différence fonctionnelle). Ensuite, votre script Web protégé par Java récupère les données et les place dans le modèle.

Le modèle Freemarker sera automatiquement utilisé pour afficher une réponse XML à l'aide des données du modèle.

+0

Mon webscript ne répondra pas avec le XML transformé. Je veux charger le ftl, créer le XML et le stocker dans un référentiel Alfresco spécifique. Mon problème est que je n'ai pas trouvé comment charger le FTL, j'ai essayé de mettre le FTL dans mon dépôt Linux, et je suis capable de le charger via son chemin 'cfg.setDirectoryForTemplateLoading (new File ("/home/nmalloul/espace de travail/workflows/stage-workflow/templates ")); Mais quand j'utilise le chemin d'Alfresco j'obtiens toujours l'erreur que le tempalte n'est pas trouvé. – nmalloul

+1

Un chemin Alfresco ne peut être résolu que par Alfresco. Une classe Freemarker avec une méthode qui prend un argument de chemin va avoir aucune idée de ce que ce chemin signifie. Vous pouvez soit (1) utiliser l'API Alfresco pour trouver le FTL, puis l'écrire dans un fichier temporaire dans un chemin connu et utiliser ce chemin ou (2) monter le repo Alfresco en tant que partage CIFS/SMB et utiliser ce chemin, car alors il ressemblera à un chemin de système de fichier simple vers Freemarker. –