Renders a <form> tag.
Any attribute that has no namespace and begins with
param. is added as a hidden form element.
The parameter name is the part of the attribute name following
When a parameter value is
null it is not added.
If the value is an
or array, then each non-null element is coerced to
as a separate parameter in iteration order. Otherwise, the value itself is
coerced to String
for the parameter value.
The action for the form. The action is modified in several ways to make things much easier to work with.
A nested <ao:action> tag will override this value.
In order to make relative paths predictable, relative paths are interpreted from the current JSP page.
In order to keep paths app-relative, if starts with a /, the context path will be prepended to the path.
In order to simplify things behind URL mapping schemes, the action is always written starting with '/'. This avoids any need to include any <ao:base> tags.
URL rewriting is performed as needed via HttpServletResponse.encodeURL.
To support paths in different character sets, a Unicode to ASCII URI encoding is performed on every character that is not defined in RFC 3986: Reserved Characters. To avoid ambiguity, any dynamic parameters or anchors in the URL must have been correctly encoded by the caller.
Any URL parameters will not be in the action attribute, but instead will be rewritten into hidden form elements. This, in conjuction with response URL rewriting, can maintain state even through posts.