2011-03-24 3 views
0

Je me demandais si vous pouviez m'aider. J'ai utilisé le moteur de vue Spark pour créer mon propre moteur de modélisation qui finit par créer un fichier Excel.

Cependant, j'ai rencontré un problème. Pendant ce processus, je pousse la sortie d'étincelle résultante dans un XmlDocument. Cela me cause des problèmes avec des caractères illégaux produits par étincelle. Par exemple

<foo> 
    <bar>${Model.Something}</bar> 
</foo> 

par Spark Gets parsé pour produire

<foo> 
    <bar>This < is a problem</bar> 
</foo> 

J'espère donc que il y a someway je peux overide la ${} pour que je puisse faire face au caractère illégal.

Veuillez également garder à l'esprit que la sortie d'étincelle résultante est une chaîne.

Des pensées?

Merci à l'avance

+0

Que diriez-vous d'utiliser le codage html que fait Spark, avez-vous essayé? Il y a une configuration globale pour cela ainsi qu'une fonction tout H(). Si vous avez besoin de l'encodage xml (pas de l'encodage htnl) vous devriez être capable de créer une macro et d'envelopper vos sorties avec. –

+0

J'ai entendu parler de la méthode H, à cause de la façon dont j'utilise le moteur, il semblerait que je n'y ai pas accès. Pourriez-vous expliquer votre concept marco? en gardant à l'esprit que l'étincelle qui en résulte génère une chaîne –

+0

Je n'ai pas utilisé Spark de la façon dont vous l'utilisez, mais vous devriez être capable de définir la propriété globale automaticEncoding sur true - une fois que vous faites cela, toutes les sorties doivent être html codé par défaut. Vous pouvez ensuite utiliser la syntaxe spéciale! {} Où vous ne voulez pas que le code html de sortie soit encodé. –

Répondre

1

Had même situation, c'est la solution de contournement:

<!-- Use instead of built-in H() that only works in HTTP context (Html != null) --> 
<macro name="H" html="string">${System.Web.HttpUtility.HtmlEncode(html)}</macro> 

De cette façon, vous n'avez pas besoin de changer votre point de vue, vous redéfinissez juste H() et le faire $ { H (Model.Something)} comme d'habitude.

Vous pouvez également placer cette macro dans \ Shared_global.spark afin qu'elle affecte toutes les vues.

+0

Ahh J'ai essayé cette approche. Mais à la fin, j'ai créé ma propre vue d'étincelle abstraite –

Questions connexes