Velocity tags are extensions of the generic Tags provided by the framework. You can get jump right in just by knowing the structure in which the tags can be accessed: #s-*tag *(...) ... #end, where tag is any of the Tags supported by the framework.
For example, in JSP you might create a form using Struts tags.
<s:form action="updatePerson"> <s:textfield label="First name" name="firstName"/> <s:submit value="Update"/> </s:form>
In Velocity, the same form can also be built using SAF macros.
#s-form ("action=updatePerson") #s-textfield ("label=First name" "name=firstName") #s-submit ("value=Update") #end
Block and Inline Tags
Some VM tags require an #end statement while others do not. The inconsistency arises from a limitation in Velocity where tags must declare if they are a block or inline tag up front. As such, by default all tags are inline except for a few key ones, such as the form tag.