<!--
This file is generated during the build by processing Component class annotations.
Please do not edit it directly.
-->
<html>
    <head>
		<title>action</title>
	</head>

	<body>
		<h1>Tag Name: action</h1>
		<h2>Description</h2>
		<p>
		<!-- START SNIPPET: tagdescription -->
		Execute an action from within a view
		<!-- END SNIPPET: tagdescription -->
		</p>

		<h2>Attributes</h2>
		<!-- START SNIPPET: tagattributes -->
		<table width="100%">
			<tr>
				<th align="left" valign="top"><h4>Name</h4></th>
				<th align="left" valign="top"><h4>Required</h4></th>
				<th align="left" valign="top"><h4>Default</h4></th>
				<th align="left" valign="top"><h4>Evaluated</h4></th>
				<th align="left" valign="top"><h4>Type</h4></th>
				<th align="left" valign="top"><h4>Description</h4></th>
			</tr>
				<tr>
					<td align="left" valign="top">executeResult</td>
					<td align="left" valign="top">false</td>
					<td align="left" valign="top">false</td>
					<td align="left" valign="top">true</td>
					<td align="left" valign="top">Boolean</td>
					<td align="left" valign="top">Whether the result of this action (probably a view) should be executed/rendered</td>
				</tr>
				<tr>
					<td align="left" valign="top">flush</td>
					<td align="left" valign="top">false</td>
					<td align="left" valign="top">true</td>
					<td align="left" valign="top">true</td>
					<td align="left" valign="top">Boolean</td>
					<td align="left" valign="top">Whether the writer should be flush upon end of action component tag, default to true</td>
				</tr>
				<tr>
					<td align="left" valign="top">id</td>
					<td align="left" valign="top">false</td>
					<td align="left" valign="top"></td>
					<td align="left" valign="top">true</td>
					<td align="left" valign="top">String</td>
					<td align="left" valign="top">id for referencing element. For UI and form tags it will be used as HTML id attribute</td>
				</tr>
				<tr>
					<td align="left" valign="top">ignoreContextParams</td>
					<td align="left" valign="top">false</td>
					<td align="left" valign="top">false</td>
					<td align="left" valign="top">true</td>
					<td align="left" valign="top">Boolean</td>
					<td align="left" valign="top">Whether the request parameters are to be included when the action is invoked</td>
				</tr>
				<tr>
					<td align="left" valign="top">name</td>
					<td align="left" valign="top"><strong>true</strong></td>
					<td align="left" valign="top"></td>
					<td align="left" valign="top">true</td>
					<td align="left" valign="top">String</td>
					<td align="left" valign="top">Name of the action to be executed (without the extension suffix eg. .action)</td>
				</tr>
				<tr>
					<td align="left" valign="top">namespace</td>
					<td align="left" valign="top">false</td>
					<td align="left" valign="top">namespace from where tag is used</td>
					<td align="left" valign="top">true</td>
					<td align="left" valign="top">String</td>
					<td align="left" valign="top">Namespace for action to call</td>
				</tr>
		</table>
		<!-- END SNIPPET: tagattributes -->
	</body>
</html>

