Author: husted
Date: Thu Aug 31 17:00:52 2006
New Revision: 439109
URL: http://svn.apache.org/viewvc?rev=439109&view=rev
Log:
WW-1392 Restore TLD and snippet code from prior revisions, since we are going
to try using XDoclet with J5 instead.
Removed:
struts/struts2/trunk/core/src/main/resources/META-INF/tags/
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java
struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java?rev=439109&r1=439108&r2=439109&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
Thu Aug 31 17:00:52 2006
@@ -17,6 +17,11 @@
*/
package org.apache.struts2.components;
+import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.StrutsException;
+import org.apache.struts2.dispatcher.Dispatcher;
+import org.apache.struts2.dispatcher.RequestMap;
+import org.apache.struts2.views.jsp.TagUtils;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.ActionProxyFactory;
@@ -24,107 +29,123 @@
import com.opensymphony.xwork2.util.OgnlValueStack;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.struts2.ServletActionContext;
-import org.apache.struts2.StrutsConstants;
-import org.apache.struts2.StrutsException;
-import org.apache.struts2.config.Settings;
-import org.apache.struts2.dispatcher.Dispatcher;
-import org.apache.struts2.dispatcher.RequestMap;
-import org.apache.struts2.views.jsp.TagUtils;
import javax.servlet.ServletContext;
+import javax.servlet.jsp.PageContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.PageContext;
+
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
/**
- * Invoke an action directly from a view.
- * See struts-tags.tld for documentation.
+ * <!-- START SNIPPET: javadoc -->
+ * <p>This tag enables developers to call actions directly from a JSP page by
specifying the action name and an optional
+ * namespace. The body content of the tag is used to render the results from
the Action. Any result processor defined
+ * for this action in struts.xml will be ignored, <i>unless</i> the
executeResult parameter is specified.</p>
+ * <!-- END SNIPPET: javadoc -->
+ *
+ * <!-- START SNIPPET: params -->
+ * <ul>
+ * <li>id (String) - the id (if specified) to put the action under
stack's context.
+ * <li>name* (String) - name of the action to be executed (without
the extension suffix eg. .action)</li>
+ * <li>namespace (String) - default to the namespace where this
action tag is invoked</li>
+ * <li>executeResult (Boolean) - default is false. Decides wheather the
result of this action is to be executed or not</li>
+ * <li>ignoreContextParams (Boolean) - default to false. Decides wheather
the request parameters are to be included when the action is invoked</li>
+ * </ul>
+ * <!-- END SNIPPET: params -->
+ *
+ * <pre>
+ * <!-- START SNIPPET: javacode -->
+ * public class ActionTagAction extends ActionSupport {
+ *
+ * public String execute() throws Exception {
+ * return "done";
+ * }
+ *
+ * public String doDefault() throws Exception {
+ *
ServletActionContext.getRequest().setAttribute("stringByAction", "This is a
String put in by the action's doDefault()");
+ * return "done";
+ * }
+ * }
+ * <!-- END SNIPPET: javacode -->
+ * </pre>
+ *
+ * <pre>
+ * <!-- START SNIPPET: strutsxml -->
+ * <xwork>
+ * ....
+ * <action name="actionTagAction1" class="tmjee.testing.ActionTagAction">
+ * <result name="done">success.jsp</result>
+ * </action>
+ * <action name="actionTagAction2" class="tmjee.testing.ActionTagAction"
method="default">
+ * <result name="done">success.jsp</result>
+ * </action>
+ * ....
+ * </xwork>
+ * <!-- END SNIPPET: strutsxml -->
+ * </pre>
+ *
+ * <pre>
+ * <!-- START SNIPPET: example -->
+ * <div>The following action tag will execute result and include it in this
page</div>
+ * <br />
+ * <s:action name="actionTagAction" executeResult="true" />
+ * <br />
+ * <div>The following action tag will do the same as above, but invokes
method specialMethod in action</div>
+ * <br />
+ * <s:action name="actionTagAction!specialMethod" executeResult="true" />
+ * <br />
+ * <div>The following action tag will not execute result, but put a String in
request scope
+ * under an id "stringByAction" which will be retrieved using property
tag</div>
+ * <s:action name="actionTagAction!default" executeResult="false" />
+ * <s:property value="#attr.stringByAction" />
+ * <!-- END SNIPPET: example -->
+ * </pre>
+ *
+ * @s.tag name="action" tld-body-content="JSP"
tld-tag-class="org.apache.struts2.views.jsp.ActionTag"
+ * description="Execute an action from within a view"
*/
public class ActionComponent extends Component {
private static final Log LOG = LogFactory.getLog(ActionComponent.class);
- /**
- * Store our HttpServletResponse.
- */
- protected HttpServletResponse response;
+ protected HttpServletResponse res;
+ protected HttpServletRequest req;
- /**
- * Store our HttpServletRequest.
- */
- protected HttpServletRequest request;
-
- /**
- * Store our ActionProxy.
- */
protected ActionProxy proxy;
-
- /**
- * Store the action mapping name.
- */
protected String name;
-
- /**
- * Store the action mappinng namespace, if different.
- */
protected String namespace;
-
- /**
- * Indicate whether to invoke the result class and render its content.
- */
protected boolean executeResult;
-
- /**
- * Indicate whether to pass the request parameters to the Action
invocation.
- */
protected boolean ignoreContextParams;
- /**
- * Construct object instance, setting runtime parameters.
- *
- * @param stack Our OgnlValueStack
- * @param request Our HttpServletRequest
- * @param response Our HttpServletResponse
- */
- public ActionComponent(OgnlValueStack stack, HttpServletRequest request,
HttpServletResponse response) {
+ public ActionComponent(OgnlValueStack stack, HttpServletRequest req,
HttpServletResponse res) {
super(stack);
- this.request = request;
- this.response = response;
+ this.req = req;
+ this.res = res;
}
-
- // See superclass for documentation
public boolean end(Writer writer, String body) {
- boolean end = super.end(writer, "", false);
- try {
- try {
- writer.flush();
- } catch (IOException e) {
- LOG.warn("error while trying to flush writer ", e);
- }
- executeAction();
-
- if ((getId() != null) && (proxy != null)) {
- getStack().setValue("#attr['" + getId() + "']",
- proxy.getAction());
- }
- } finally {
- popComponentStack();
- }
+ boolean end = super.end(writer, "", false);
+ try {
+ try {
+ writer.flush();
+ } catch (IOException e) {
+ LOG.warn("error while trying to flush writer ",
e);
+ }
+ executeAction();
+
+ if ((getId() != null) && (proxy != null)) {
+ getStack().setValue("#attr['" + getId() + "']",
+ proxy.getAction());
+ }
+ } finally {
+ popComponentStack();
+ }
return end;
}
- /**
- * Create a context in which to invoke Action class,
- * passing along context parameters
- * if ignoreContextParams is FALSE.
- *
- * @return A map representing the new context
- */
private Map createExtraContext() {
Map parentParams = null;
@@ -145,12 +166,12 @@
Map application = ctx.getApplication();
Dispatcher du = Dispatcher.getInstance();
- Map extraContext = du.createContextMap(new RequestMap(request),
+ Map extraContext = du.createContextMap(new RequestMap(req),
newParams,
session,
application,
- request,
- response,
+ req,
+ res,
servletContext);
OgnlValueStack newStack = new OgnlValueStack(stack);
@@ -162,37 +183,42 @@
return extraContext;
}
+ public ActionProxy getProxy() {
+ return proxy;
+ }
+
/**
- * Invoke the Action class,
- * If no namespace is provided, attempt to derive a namespace using the
buildNamespace method.
+ * Execute the requested action. If no namespace is provided, we'll
+ * attempt to derive a namespace using buildNamespace(). The ActionProxy
+ * and the namespace will be saved into the instance variables proxy and
+ * namespace respectively.
*
* @see org.apache.struts2.views.jsp.TagUtils#buildNamespace
*/
private void executeAction() {
- // FIXME: our implementation is flawed - the only concept of ! should
be in DefaultActionMapper
- boolean allowDynamicMethodCalls =
"true".equals(Settings.get(StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION));
String actualName = findString(name, "name", "Action name is required.
Example: updatePerson");
if (actualName == null) {
throw new StrutsException("Unable to find value for name " + name);
}
- String actionName = actualName;
- String methodName = null;
-
// handle "name!method" convention.
- if (allowDynamicMethodCalls) {
- int exclamation = actualName.lastIndexOf("!");
- if (exclamation != -1) {
- actionName = actualName.substring(0, exclamation);
- methodName = actualName.substring(exclamation + 1);
- }
+ final String actionName;
+ final String methodName;
+
+ int exclamation = actualName.lastIndexOf("!");
+ if (exclamation != -1) {
+ actionName = actualName.substring(0, exclamation);
+ methodName = actualName.substring(exclamation + 1);
+ } else {
+ actionName = actualName;
+ methodName = null;
}
String namespace;
if (this.namespace == null) {
- namespace = TagUtils.buildNamespace(getStack(), request);
+ namespace = TagUtils.buildNamespace(getStack(), req);
} else {
namespace = findString(this.namespace);
}
@@ -202,21 +228,20 @@
// execute at this point, after params have been set
try {
Configuration config =
Dispatcher.getInstance().getConfigurationManager().getConfiguration();
- proxy = ActionProxyFactory.getFactory().createActionProxy(config,
namespace, actionName,
- createExtraContext(), executeResult, true);
+ proxy = ActionProxyFactory.getFactory().createActionProxy(config,
namespace, actionName, createExtraContext(), executeResult, true);
if (null != methodName) {
proxy.setMethod(methodName);
}
// set the new stack into the request for the taglib to use
- request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY,
proxy.getInvocation().getStack());
+ req.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY,
proxy.getInvocation().getStack());
proxy.execute();
} catch (Exception e) {
- String message = "Could not invoke action: " + namespace + "/" +
actualName;
+ String message = "Could not execute action: " + namespace + "/" +
actualName;
LOG.error(message, e);
} finally {
// set the old stack back on the request
- request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY,
stack);
+ req.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY,
stack);
}
if ((getId() != null) && (proxy != null)) {
@@ -226,35 +251,41 @@
}
/**
- * Expose proxy instance (for testing).
- *
- * @return proxy instance
+ * the id (if speficied) to put the action under stack's context.
+ * @s.tagattribute required="false" type="String"
*/
- public ActionProxy getProxy() {
- return proxy;
- }
-
- // See TLD for documentation
public void setId(String id) {
super.setId(id);
}
- // See TLD for documentation
+ /**
+ * name of the action to be executed (without the extension suffix eg.
.action)
+ * @s.tagattribute required="true" type="String"
+ */
public void setName(String name) {
this.name = name;
}
- // See TLD for documentation
+ /**
+ * namespace for action to call
+ * @s.tagattribute required="false" type="String" default="namespace from
where tag is used"
+ */
public void setNamespace(String namespace) {
this.namespace = namespace;
}
- // See TLD for documentation
+ /**
+ * whether the result of this action (probably a view) should be
executed/rendered
+ * @s.tagattribute required="false" type="Boolean" default="false"
+ */
public void setExecuteResult(boolean executeResult) {
this.executeResult = executeResult;
}
- // See TLD for documentation
+ /**
+ * whether the request parameters are to be included when the action is
invoked
+ * @s.tagattribute required="false" type="Boolean" default="false"
+ */
public void setIgnoreContextParams(boolean ignoreContextParams) {
this.ignoreContextParams = ignoreContextParams;
}
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java?rev=439109&r1=439108&r2=439109&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java
Thu Aug 31 17:00:52 2006
@@ -23,32 +23,38 @@
import javax.servlet.http.HttpServletResponse;
/**
- * Render action errors, if they exist,
- * obtaining the layout from theme.
+ * <!-- START SNIPPET: javadoc -->
+ *
+ * Render action errors if they exists the specific layout of the rendering
depends on
+ * the theme itself.
+ *
+ * <!-- END SNIPPET: javadoc -->
+ *
+ * <p/> <b>Examples</b>
+ *
+ * <pre>
+ * <!-- START SNIPPET: example -->
+ *
+ * <s:actionerror />
+ * <s:form .... >>
+ * ....
+ * </s:form>
+ *
+ * <!-- END SNIPPET: example -->
+ * </pre>
+ *
+ * @s.tag name="actionerror" tld-body-content="empty"
tld-tag-class="org.apache.struts2.views.jsp.ui.ActionErrorTag"
+ * description="Render action errors if they exists"
*/
public class ActionError extends UIBean {
- /**
- * Provide the tag template name.
- */
- private static final String TEMPLATE = "actionerror";
+ public static final String TEMPLATE = "actionerror";
+
- /**
- * Construct object instance, setting runtime parameters.
- *
- * @param stack Our OgnlValueStack
- * @param request Our HttpServletRequest
- * @param response Our HttpServletResponse
- */
public ActionError(OgnlValueStack stack, HttpServletRequest request,
HttpServletResponse response) {
super(stack, request, response);
}
- /**
- * Provide the tag's default template.
- *
- * @return the tag's default template
- */
protected String getDefaultTemplate() {
return TEMPLATE;
}
Modified: struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld?rev=439109&r1=439108&r2=439109&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld
(original)
+++ struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld Thu
Aug 31 17:00:52 2006
@@ -13,8 +13,7 @@
<description><![CDATA[
To make it easier to access dynamic data,
the Apache Struts framework includes a library of custom tags.
- The tags interact with the framework's expression language,
- and its validation and internationalization features,
+ The tags interact with the framework's validation and internationalization
features,
to ensure that input is correct and output is localized.
The Struts Tags can be used with JSP, FreeMarker, or Velocity.
]]></description>
@@ -3005,87 +3004,51 @@
<name>action</name>
<tag-class>org.apache.struts2.views.jsp.ActionTag</tag-class>
<body-content>JSP</body-content>
- <description>
- Invoke an action directly from a view.
- Tag attributes specify an action name and an optional namespace.
- Tag body content renders the result from the Action.
- If the executeResult attribute is TRUE,
- any result class specified by the action mapping is invoked and
rendered,
- otherwise the result is ignored.
- </description>
+ <description><![CDATA[Execute an action from within a
view]]></description>
+
<attribute>
<name>id</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>If specified, the action's stack context
ID</description>
+
+ <description><![CDATA[the id (if speficied) to put the action
under stack's context.]]></description>
+
</attribute>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
- <description>Action mapping to invoke</description>
+
+ <description>
+ <![CDATA[name of the action to be executed (without the
extension suffix eg. .action)]]></description>
+
</attribute>
<attribute>
<name>namespace</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>The action mapping's namespace (if different than the
current namespace)</description>
+
+ <description><![CDATA[namespace for action to call]]></description>
+
</attribute>
<attribute>
<name>executeResult</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>If TRUE, invoke the result class, rendering its
content (if any)</description>
+
+ <description>
+ <![CDATA[whether the result of this action (probably a view)
should be executed/rendered]]></description>
+
</attribute>
<attribute>
<name>ignoreContextParams</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>If FALSE, include the request parameters during the
action invocation</description>
+
+ <description>
+ <![CDATA[whether the request parameters are to be included
when the action is invoked]]></description>
+
</attribute>
- <example><![CDATA[
-// Action class
-public class ActionTagAction extends ActionSupport {
-
- public String execute() throws Exception {
- return SUCCESS;
- }
-
- public String alternate() throws Exception {
- ServletActionContext.getRequest().setAttribute("actionAttribute",
- "This string is a request attribute set by the ActionTagAction's
alternate() method.");
- return SUCCESS;
- }
- }
-
- <!-- Struts configuation -->
- <struts>
- ....
- <action name="ActionTagAction1" class="testing.ActionTagAction">
- <result>success.jsp</result>
- </action>
- <action name="ActionTagAction2" class="testing.ActionTagAction"
method="alternate">
- <result name="done">success.jsp</result>
- </action>
- ....
- </struts>
-
- <!-- Struts tags (in a server page) -->
- <div>
- <p>
- Content rendered by another Action, invoked as this page is being rendered:
- </p>
- <s:action name="ActionTagAction1" executeResult="true" />
- </div><div>
- <p>
- Content placed into the context by another Action, invoked as this page is
being rendered:
- </p>
- <s:action name="ActionTagAction2" executeResult="false" />
- <s:property value="#attr.actionAttribute" />
- <p>
- (Note that the Action itself did not render a result.)
- </p>
- ]]></example>
</tag>
<tag>
@@ -3523,219 +3486,275 @@
<name>actionerror</name>
<tag-class>org.apache.struts2.views.jsp.ui.ActionErrorTag</tag-class>
<body-content>empty</body-content>
- <description>
- Render action errors, if they exist, obtaining the layout from
theme.
- </description>
+ <description><![CDATA[Render action errors if they
exists]]></description>
+
<attribute>
<name>theme</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Theme (other than default) to use for rendering the
element</description>
+
+ <description><![CDATA[The theme (other than default) to use for
rendering the element]]></description>
+
</attribute>
<attribute>
<name>templateDir</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Template directory (other than default) to use to
find the themes (and hence the template)</description>
+
+ <description>
+ <![CDATA[The template directory (other than default) to used
to find the themes and hence the template.]]></description>
+
</attribute>
<attribute>
<name>template</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Template (other than default) to use for rendering
the element</description>
+
+ <description><![CDATA[The template (other than default) to use for
rendering the element]]></description>
+
</attribute>
<attribute>
<name>cssClass</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Cascading Style Sheet class (other than default)for
element to use</description>
+
+ <description><![CDATA[The css class to use for
element]]></description>
+
</attribute>
<attribute>
<name>cssStyle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Cascading Style Sheet definitions for element to
use</description>
+
+ <description><![CDATA[The css style definitions for element ro
use]]></description>
+
</attribute>
<attribute>
<name>title</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML title attribute for element to use</description>
+
+ <description><![CDATA[Set the html title attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>disabled</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML disabled attribute for element to
use</description>
+
+ <description><![CDATA[Set the html disabled attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>label</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Label expression used for rendering a element
specific label</description>
+
+ <description><![CDATA[Label expression used for rendering a
element specific label]]></description>
+
</attribute>
<attribute>
<name>labelPosition</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
+
<description><![CDATA[deprecated.]]></description>
+
</attribute>
<attribute>
<name>labelposition</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Label position for form element
(top/left)</description>
+
+ <description><![CDATA[define label position of form element
(top/left)]]></description>
+
</attribute>
<attribute>
<name>requiredposition</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Required position for form element
(left|right)</description>
+
+ <description><![CDATA[define required position of required form
element (left|right)]]></description>
+
</attribute>
<attribute>
<name>name</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Name for element</description>
+
+ <description><![CDATA[The name to set for element]]></description>
+
</attribute>
<attribute>
<name>required</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
+
<description>
- If TRUE, rendered element will indicate that input is required.
- </description>
+ <![CDATA[If set to true, the rendered element will indicate
that input is required]]></description>
+
</attribute>
<attribute>
<name>tabindex</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML tabindex attribute for rendered HTML
element</description>
+
+ <description><![CDATA[Set the html tabindex attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Preset value of input element</description>
+
+ <description><![CDATA[Preset the value of input
element.]]></description>
+
</attribute>
<attribute>
<name>onclick</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onclick attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>ondblclick</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html ondblclick attribute on
rendered html element]]></description>
+
</attribute>
<attribute>
<name>onmousedown</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onmousedown attribute on
rendered html element]]></description>
+
</attribute>
<attribute>
<name>onmouseup</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onmouseup attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>onmouseover</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onmouseover attribute on
rendered html element]]></description>
+
</attribute>
<attribute>
<name>onmousemove</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onmousemove attribute on
rendered html element]]></description>
+
</attribute>
<attribute>
<name>onmouseout</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onmouseout attribute on
rendered html element]]></description>
+
</attribute>
<attribute>
<name>onfocus</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onfocus attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>onblur</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onblur attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>onkeypress</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onkeypress attribute on
rendered html element]]></description>
+
</attribute>
<attribute>
<name>onkeydown</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onkeydown attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>onkeyup</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onkeyup attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>onselect</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onselect attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>onchange</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html onchange attribute on rendered
html element]]></description>
+
</attribute>
<attribute>
<name>accesskey</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>HTML attribute for rendered element</description>
+
+ <description><![CDATA[Set the html accesskey attribute on rendered
html ekement]]></description>
+
</attribute>
<attribute>
<name>tooltip</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>Tooltip attribute for rendered element</description>
+
+ <description><![CDATA[Set the tooltip of this particular
component]]></description>
+
</attribute>
<attribute>
<name>tooltipConfig</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
- <description>TooltipConfig attribute for rendered
element</description>
+
+ <description><![CDATA[Set the tooltip
configuration]]></description>
+
</attribute>
<attribute>
<name>id</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
+
<description>
- Unique id for referencing element.
- For UI and form tags it will be used as HTML id attribute
- </description>
+ <![CDATA[id for referencing element. For UI and form tags it
will be used as HTML id attribute]]></description>
+
</attribute>
- <example><![CDATA[
-// Note that the tag provides its own formatting
-<s:actionerror />
-<s:form ... >
-...
-</s:form>
- ]]></example>
</tag>
<tag>
@@ -3743,7 +3762,7 @@
<name>if</name>
<tag-class>org.apache.struts2.views.jsp.IfTag</tag-class>
<body-content>JSP</body-content>
- <description>If tag</description>
+ <description><![CDATA[If tag]]></description>
<attribute>
<name>test</name>