Velocity - Comment éviter ParseErrorException lors de l'utilisation de jQuery?
J'essaye d'ajouter un jQuery post pour un peu de JavaScript sur une page web. L'intégralité de la page est constitué de plusieurs Vitesse de modèles. Tout a été parfait jusqu'à ce que j'ai essayé d'ajouter l'jQuery post, je reçois maintenant:
org.apache.velocity.exception.ParseErrorException: Encountered "," at line 282, column 24 of /WEB-INF/velocity/www/comments.vm
Was expecting one of:
"(" ...
<RPAREN> ...
<ESCAPE_DIRECTIVE> ...
~~~snip~~~
Ligne 282 est $.post(...
et de la colonne 24 semble être le premier", le caractère". Au départ, j'ai eu le JSON sur cette ligne, mais je l'ai déplacé (pour le var myJSONObject ...
ligne)que j'ai pensé que l'erreur liée à invalid JSON (onglets au début de la ligne a donné une fausse numéro de colonne).
var myJSONObject = {"body": "", "action": "postcomment", "submitted": "true", "ajax": "true"};
myJSONObject.body = $("body").val();
$.post("$!{articleurl}", myJSONObject, function(result){
btn.textContent='Comment sent successfully.';
});
Mise À Jour Mineure
J'ai modifié les lignes suivantes:
var url = "$articleurl";
$.post(url, myJSONObject, function(result){
~~~snip~~~
L'analyse exception se concentre toujours sur la première ",". Je suppose que le problème est que la Vélocité pense qu'il devrait être en mesure de résoudre $.post - lorsqu'en fait, c'est jQuery. J'ai utilisé jQuery dans d'autres Vitesse VM templates sans aucun problème. Est-il un moyen pour obtenir la Vitesse d'ignorer certaines lignes /déclarations lors de l'analyse?
Mise à jour 2
J'ai trouvé ce lien au sujet d'échapper à des références de Vitesse, mais il ne résout pas mon problème. L'ajout d'un "\" avant $.post
me donne exactement la même erreur, mais la colonne est un de plus, en raison du caractère ajoutée au début de la ligne.
OriginalL'auteur Michael | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
Vous pouvez envelopper votre javascript avec
#[[ ... ]]#
qui indique la Vitesse pour ne pas analyser le joint de bloc (nouveau dans la Vitesse de 1.7)L'autre inconvénient de cette est que vous aurez remarqué que j'utilise un peu de Vitesse variables dans le script.
J'ai l'habitude de lancer toutes les variables js qui viennent de la vitesse dans un coin de bloc de script ci-dessus.
Qui sonne comme la meilleure approche, je vais faire quelques refactoring pour améliorer la lisibilité / maintenabilité. 😀
Vous pouvez aussi écrire
jQuery
au lieu de$
OriginalL'auteur serg
Ok, il semble y avoir deux solutions pour cela:
D'abord, avec jQuery, on peut juste éviter d'utiliser le global alias $ et au lieu d'utiliser l'objet jQuery directement:
Dans mon cas, le ci-dessus fonctionne très bien. Mais je soupçonne que dans les autres scénarios (non-jQuery) cela peut ne pas être possible. Dans ce cas, on peut "masquer" notre personnage dans un valide Vitesse de référence comme ceci:
Source: http://velocity.apache.org/engine/devel/user-guide.html#escapinginvalidvtlreferences
Je voudrais encore savoir pourquoi l'échappement n'a pas fonctionné, mais le ci-dessus permettra au moins de me déplacer à nouveau. 🙂
OriginalL'auteur Michael
Je pense que c'est un bug dans la version 1.6.x, car il fonctionne très bien en 1.7(Si il n'a pas, s'il vous plaît dites-moi, je l'ai tester plusieurs fois..), selon la référence, la
$
ne prend effet que lorsqu'il est suivi para-zA-Z
. Je veux essayer de faire de débogage de ce qui s'est passé réellement, mais la traduction de code est généré par Java CC outil, il est trop difficile de reconnaître la logique...OriginalL'auteur zhb
vous devez créer un fichier js avec votre code javascript
et l'importation de votre fichier js dans votre vm code
OriginalL'auteur giang.sys
Je ne pouvais pas le faire fonctionner avec les autres correctifs comme pour échapper à "$" dans la vélocité malheureusement. J'ai eu de travail par le chargement d'un js externe-fichier avec le jQuery à la place de l'écriture jQuery directement de la vitesse. Fonctionné pour moi au moins, j'espère que ça aide quelqu'un 🙂
/björn
OriginalL'auteur wonderbjorn