Prev Next

API / Apache Velocity Interview questions

What happens when a referenced property or method doesn't exist on an object in a template?

In default lenient mode, Velocity's Uberspector tries to resolve $obj.someProperty as a getter (getSomeProperty()) or public field. If neither exists on the object's class, resolution simply fails silently: the reference renders as its literal text, $obj.someProperty, and rendering continues normally.

No exception propagates up to the calling Java code by default, which means a renamed getter or a typo'd property name can go unnoticed until someone visually spots stray $ text in the output. Velocity does support registering an EventCartridge with an InvalidReferenceEventHandler, which lets you intercept these failures programmatically, for example to log a warning, without switching the whole engine into strict mode.

By default, what happens when a referenced property doesn't exist on the underlying object?
How can you intercept and log a missing-property failure without switching the whole engine to strict mode?

More Related questions...

What is Apache Velocity? What are the main features of Apache Velocity? What is Velocity Template Language (VTL)? What file extension do Velocity templates typically use? What is the purpose of the VelocityContext? What are Velocity directives? What are the types of loops available in Velocity? How do you use variable references in Velocity templates? How do you apply conditional logic in a Velocity template? Define the #set directive in Velocity? Describe the role of the VelocityEngine class? List the comment syntax options available in VTL? Explain the purpose of the #include directive? What is the purpose of the #parse directive? What is a Velocimacro (#macro directive)? What is the purpose of the #stop directive? What is silent/quiet reference notation ($!) used for? How do you use the #break directive? What are formal vs shorthand references in VTL? How do you render array or list elements with #foreach? Why is Velocity described as a "template engine" rather than a full programming language? Why do we use Velocity instead of embedding logic in JSP? Why should you avoid putting business logic inside Velocity templates? Why doesn't Velocity throw an exception by default for an undefined reference? How does Velocity resolve a variable reference at render time? How is Apache Velocity different from Apache FreeMarker? When should you use #parse over #include? When would you choose a Velocimacro over a Java-side helper method? What happens when a referenced property or method doesn't exist on an object in a template? What is the difference between #set($x = $y) and context.put("x", y) in Java code? Which is better for reusable rendering logic: a Velocimacro or a custom Directive class, and why? How can you optimize Velocity template rendering performance? How do you troubleshoot a "parse error" in a VTL template? Explain the lifecycle of a Velocity template from load to render? What is the difference between local and global (library) Velocimacros? What is strict reference mode in Velocity, and how does it differ from the default lenient mode? How does Velocity integrate with the Apache Struts framework? How does Velocity handle null values inside #if conditions and references? What is the RuntimeInstance in Velocity's architecture? What is the role of the ResourceManager and ResourceLoader in Velocity? How do you configure a custom template ResourceLoader in Velocity? What is the difference in templating philosophy between Apache Velocity and Thymeleaf? How do you escape special characters like $ and # in a Velocity template? What are Velocity Tools (VelocityTools) and why would you use them? How do you handle internationalization (i18n) in Velocity templates? Explain the internal working of Velocimacro resolution and invocation? Explain the internal working of the Velocity template parsing process? What security risks are associated with allowing untrusted users to submit Velocity templates? What is the Uberspector in Velocity and what problem does it solve? Why is Apache Velocity often considered a legacy choice for new Java projects today?
Show more question and Answers...


Comments & Discussions