Strict mode will also suffice for my needs. I am new to Velocity. I am
setting the runtime.reference.strict to true before init() like below

final var engine = new VelocityEngine();
engine.setProperty("runtime.references.strict", "true");
engine.init();

I want the Strict mode to be enabled only for some templates. So can this
be overwritten per context or I have to create two VelocityEngine instances
one with strict mode enabled and another without strict mode?

Another follow-up question on the same topic,  is it possible to also check
if all keys specified in VelocityContext are valid for a template. For
example, let's say I have a template, card.vm

card {
    type: CREDIT
    company: VISA
    name: "${firstName} ${lastName}"
  }

If I am then doing something like the below then the above code should
throw an error as cardNumber is not present in the card.vm


VelocityContext context = new VelocityContext();
context.put("firstName", "tuk");
context.put("lastName", "man");
*context.put("cardNumber", "1234");*
StringWriter writer = new StringWriter();
t.merge( context, writer );


On Wed, Jun 14, 2023 at 11:57 AM Stefan Großhauser <
stefan.grosshau...@hammerbachergmbh.de> wrote:

>
> Hello,
>
> isn't the "strict mode" already what you want?
>
>
> https://velocity.apache.org/engine/devel/user-guide.html#strict-rendering-mode
>
> best regards
>
> Stefan
>
>
>
> * Von: * Debraj Manna <subharaj.ma...@gmail.com>
> * An: * <user@velocity.apache.org>
> * Gesendet: * 13.06.2023 11:38
> * Betreff: * Apache Velocity : Verify if all substitutions are made
>
> Can someone let me know how I can verify a velocity context against a
> template? Basically, I want to throw some error if all variables are not
> substituted in the velocity template.
>
> For example, let's say I have a velocity template, card.vm
>
>  card {
>    type: CREDIT
>    company: VISA
>    name: "${firstName} ${lastName}"
>  }
>
> The substitution is done like below
>
> VelocityEngine velocityEngine = new VelocityEngine();
> velocityEngine.init();
>
> Template t = velocityEngine.getTemplate("card.vm");
>
> VelocityContext context = new VelocityContext();
> context.put("firstName", "tuk");
> StringWriter writer = new StringWriter();
> t.merge( context, writer );
>
> In this case, I want to throw some error specifying that lastName is not
> replaced in template.
>
> Does velocity provide anything for this?
>
>
>
>
>
>
>
> *JETZT NEWSLETTER ABONNIEREN:
> https://hammerbacher.com/newsletter-anmeldung/
> <https://hammerbacher.com/newsletter-anmeldung/>*
> *Hammerbacher GmbH Registergericht Nürnberg HRB 10908*
> *Geschäftsführer Bernhard Hammerbacher, Ursula Hammerbacher, Christoph
> Hammerbacher, Andreas Hammerbacher*
> Hausanschrift
> Daimlerstraße 4-6
> D 92318 Neumarkt Telefon
> +49(0)9181
> 2592-0 Telefax
> +49(0)9181
> 2592-28 E-Mail
> i...@hammerbacher.com
> www.hammerbacher.com
>
>
> Haftungsausschluss / Disclaimer
> Die Informationen, die in dieser Kommunikation enthalten sind, sind
> ausschließlich und allein für den Empfänger bestimmt. Die Verwendung durch
> Dritte ist untersagt. Die Firma Hammerbacher GmbH ist nur für die von ihr
> eingegeben Informationen verantwortlich, jedoch nicht für die einwandfreie
> Übertragung oder im Zusammenhang mit der Übertragung oder dem Empfang
> eingetretene Veränderungen oder Verzögerungen. Diese E-Mail enthält
> vetrtrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht
> der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben,
> informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail.
> Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist
> nicht gestattet.
>
>

Reply via email to