2017-09-21 2 views
0

Je configure un modèle Java NetBeans personnalisé. Lorsque j'utilise une fonction intégrée sans argument, par exemple ${name?lower_case}, mon modèle fonctionne correctement. Cependant, lorsque j'utilise une fonction avec argument, je me retrouve avec une erreur (le fichier généré est vide).Modèle Netbeans avec Freemarker: intégré avec l'argument échoue

la fonction dite est removing_ending. J'ai un Test.java et je veux générer un TestView.java qui repose sur Test.java:

<#assign type = ${name?remove_ending("View")}> 

<#if package?? && package != ""> 
package ${package}; 
</#if> 

import com.company.project.AbstractClass; 

public class ${name} extends AbstractClass<${type}>{ 

} 

Je me demande si je manquais une certaine importance, mais la fonction est dit être intégré donc j'ai supposé qu'il est disponible.

  • J'ai essayé de <#ftl> ajouté au sommet du modèle sans succès
  • Avoir type = "${name?remove_ending("View")}" (guillemet) ou échapper à des guillemets autour du mot View n'a pas aidé ni

EDIT & Solution

  • Sur Windows, les journaux Netbeans sont situés à% USER_HOME%/AppData/Roaming/NetBeans/{version netbeans} /var/log/messages.log
  • Je n'ai pas cherché quelle version de FreeMarker Netbeans 8.2 utilise mais la commande remove_ending n'était tout simplement pas disponible. J'ai utilisé un name?substring(0, name?length - 4)
  • fichiers de modèle sont localed en% USER_HOME% \ AppData \ Roaming \ NetBeans {version NetBeans} \ config \ Modèles

Répondre

1

La syntaxe correcte est <#assign type = name?remove_ending("View")>. Non ${} est nécessaire là-bas.

En outre, je ne connais pas NetBeans, mais il doit y avoir au moins un log quelque part qui vous indique l'erreur. (Le fait de donner silencieusement des résultats vides, sans aucune fenêtre d'erreur, n'est pas très facile à utiliser.) Si ce n'est pas le cas, vous pouvez tester votre syntaxe sur http://try.freemarker.org/ (bien que vous ayez gagné N'avez pas le même modèle de données, ni peut-être la même version de FreeMarker, mais dans ce cas par exemple il vous indique quel est le problème).

+0

Merci pour la réponse, l'indice du journal et la syntaxe correcte étaient sauveur! J'ai modifié ma question pour mettre en évidence le chemin des journaux Netbeans. Dommage que Netbeans ne supporte pas 'remove_ending'. Je vais creuser ce point plus tard ... – Al1

+0

Ils ont juste à mettre à jour FreeMarker, comme les versions 2.3.x sont rétrocompatibles. (Eh bien, en supposant qu'ils n'ont pas fourchu et modifié ce qu'ils ont ...) – ddekany