mirror of
https://github.com/apache/struts.git
synced 2026-08-15 11:37:02 +00:00
WW-1392 Restore TLD and snippet code from prior revisions, since we are going to try using XDoclet with J5 instead.
git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@439109 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -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.config.Configuration;
|
||||
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();
|
||||
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();
|
||||
}
|
||||
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 @@ public class ActionComponent extends Component {
|
||||
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 @@ public class ActionComponent extends Component {
|
||||
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 @@ public class ActionComponent extends Component {
|
||||
// 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 @@ public class ActionComponent extends Component {
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
@@ -23,32 +23,38 @@ import javax.servlet.http.HttpServletRequest;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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 @@ public class ActionTagAction extends ActionSupport {
|
||||
<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 @@ public class ActionTagAction extends ActionSupport {
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user