📄 actionconfig.java
字号:
/*
* $Id: ActionConfig.java 505640 2007-02-10 06:32:27Z mikus $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.struts.config;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.util.RequestUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
/**
* <p>A JavaBean representing the configuration information of an
* <code><action></code> element from a Struts module configuration
* file.</p>
*
* @version $Rev: 505640 $ $Date: 2007-02-10 14:32:27 +0800 $
* @since Struts 1.1
*/
public class ActionConfig extends BaseConfig {
private static final Log log = LogFactory.getLog(ActionConfig.class);
/**
* Literal that describes request condition for "reset" and "populate"
* properties.
*
* @since Struts 1.4
*/
public static final String REQUEST_STR = "request";
/**
* Literal that describes forward condition for "reset" and "populate"
* properties.
*
* @since Struts 1.4
*/
public static final String FORWARD_STR = "forward";
// ----------------------------------------------------- Instance Variables
/**
* <p> The set of exception handling configurations for this action, if
* any, keyed by the <code>type</code> property. </p>
*/
protected HashMap exceptions = new HashMap();
/**
* <p> The set of local forward configurations for this action, if any,
* keyed by the <code>name</code> property. </p>
*/
protected HashMap forwards = new HashMap();
// ------------------------------------------------------------- Properties
/**
* <p> The module configuration with which we are associated. </p>
*/
protected ModuleConfig moduleConfig = null;
/**
* <p> The request-scope or session-scope attribute name under which our
* form bean is accessed, if it is different from the form bean's
* specified <code>name</code>. </p>
*/
protected String attribute = null;
/**
* <p>The internal identification of this action mapping. Identifications are
* not inheritable and must be unique within a module.</p>
*
* @since Struts 1.3.6
*/
protected String actionId = null;
/**
* <p>The path of the ActionConfig that this object should inherit
* properties from.</p> </p>
*/
protected String inherit = null;
/**
* Indicates whether the "cancellable " property has been set or not.
*/
private boolean cancellableSet = false;
/**
* <p>Can this Action be cancelled? [false]</p> <p> By default, when an
* Action is cancelled, validation is bypassed and the Action should not
* execute the business operation. If a request tries to cancel an Action
* when cancellable is not set, a "InvalidCancelException" is thrown.
* </p>
*/
protected boolean cancellable = false;
/**
* <p> Have the inheritance values for this class been applied?</p>
*/
protected boolean extensionProcessed = false;
/**
* <p> Context-relative path of the web application resource that will
* process this request via RequestDispatcher.forward(), instead of
* instantiating and calling the <code>Action</code> class specified by
* "type". Exactly one of <code>forward</code>, <code>include</code>, or
* <code>type</code> must be specified. </p>
*/
protected String forward = null;
/**
* <p> Context-relative path of the web application resource that will
* process this request via RequestDispatcher.include(), instead of
* instantiating and calling the <code>Action</code> class specified by
* "type". Exactly one of <code>forward</code>, <code>include</code>, or
* <code>type</code> must be specified. </p>
*/
protected String include = null;
/**
* <p> Context-relative path of the input form to which control should be
* returned if a validation error is encountered. Required if "name" is
* specified and the input bean returns validation errors. </p>
*/
protected String input = null;
/**
* <p> Fully qualified Java class name of the <code>MultipartRequestHandler</code>
* implementation class used to process multi-part request data for this
* Action. </p>
*/
protected String multipartClass = null;
/**
* <p> Name of the form bean, if any, associated with this Action. </p>
*/
protected String name = null;
/**
* <p> General purpose configuration parameter that can be used to pass
* extra information to the Action instance selected by this Action.
* Struts does not itself use this value in any way. </p>
*/
protected String parameter = null;
/**
* <p> Context-relative path of the submitted request, starting with a
* slash ("/") character, and omitting any filename extension if extension
* mapping is being used. </p>
*/
protected String path = null;
/**
* <p> Prefix used to match request parameter names to form bean property
* names, if any. </p>
*/
protected String prefix = null;
/**
* <p> Comma-delimited list of security role names allowed to request this
* Action. </p>
*/
protected String roles = null;
/**
* <p> The set of security role names used to authorize access to this
* Action, as an array for faster access. </p>
*/
protected String[] roleNames = new String[0];
/**
* <p> Identifier of the scope ("request" or "session") within which our
* form bean is accessed, if any. </p>
*/
protected String scope = "session";
/**
* <p>Identifies conditions for automatic form reset.</p>
*
* <p>Possible values: null (not specified), "request", "forward" or
* "request-forward" (used when not specified). If not specified then
* the form bean is reset both for direct and for forwarded request.</p>
*
* @since Struts 1.4
*/
protected String reset = REQUEST_STR + "-" + FORWARD_STR;
/**
* <p>Identifies conditions for automatic form population with values
* from HTTP request.</p>
*
* <p>Possible values: null (not specified), "request", "forward" or
* "request-forward" (used when not specified). If not specified then
* the form bean is populated both for direct and for forwarded request.
* This means that when a chained action mapping refers to the same
* form bean as originating action, then the form bean is repopulated
* and changes made by originating action are lost.</p>
*
* @since Struts 1.4
*/
protected String populate = REQUEST_STR + "-" + FORWARD_STR;
/**
* <p> Suffix used to match request parameter names to form bean property
* names, if any. </p>
*/
protected String suffix = null;
/**
* <p> Fully qualified Java class name of the <code>Action</code> class to
* be used to process requests for this mapping if the
* <code>forward</code> and <code>include</code> properties are not set.
* Exactly one of <code>forward</code>, <code>include</code>, or
* <code>type</code> must be specified.
*/
protected String type = null;
/**
* <p> Indicates Action be configured as the default one for this module,
* when true.
*/
protected boolean unknown = false;
/**
* Indicates whether the "validate" property has been set or not.
*/
private boolean validateSet = false;
/**
* <p> Should the <code>validate()</code> method of the form bean
* associated with this action be called?
*/
protected boolean validate = true;
/**
* <p> The name of a <code>commons-chain</code> command which should be
* executed as part of the processing of this action.
*
* @since Struts 1.3.0
*/
protected String command = null;
/**
* <p> The name of a <code>commons-chain</code> catalog in which
* <code>command</code> should be sought. If a <code>command</code> is
* defined and this property is undefined, the "default" catalog will be
* used. This is likely to be infrequently used after a future release of
* <code>commons-chain</code> supports a one-string expression of a
* catalog/chain combination.
*
* @since Struts 1.3.0
*/
protected String catalog = null;
/**
* <p>The internal name of this action mapping. If an action has a name, it may be used
* as a shortcut in a URI. For example, an action with an identification of "editPerson"
* may be internally forwarded as "editPerson?id=1" which will then resolve to the
* real URI path at execution time.</p>
*
* @return the actionId
* @since Struts 1.3.6
*/
public String getActionId() {
return this.actionId;
}
/**
* <p>The internal name of this action mapping. The name is not inheritable,
* may not contain a forward slash, and must be unique within a module. </p>
*
* @param actionId the action identifier
* @since Struts 1.3.6
* @throws IllegalStateException if the configuration is frozen
* @throws IllegalArgumentException if the identifier contains a forward slash
*/
public void setActionId(String actionId) {
if (configured) {
throw new IllegalStateException("Configuration is frozen");
}
if ((actionId != null) && (actionId.indexOf("/") > -1)) {
throw new IllegalArgumentException("actionId '" + actionId + "' may not contain a forward slash");
}
this.actionId = actionId;
}
/**
* <p> The module configuration with which we are associated.
*/
public ModuleConfig getModuleConfig() {
return (this.moduleConfig);
}
/**
* <p> The module configuration with which we are associated.
*/
public void setModuleConfig(ModuleConfig moduleConfig) {
if (configured) {
throw new IllegalStateException("Configuration is frozen");
}
this.moduleConfig = moduleConfig;
}
/**
* <p> Returns the request-scope or session-scope attribute name under
* which our form bean is accessed, if it is different from the form
* bean's specified <code>name</code>.
*
* @return attribute name under which our form bean is accessed.
*/
public String getAttribute() {
if (this.attribute == null) {
return (this.name);
} else {
return (this.attribute);
}
}
/**
* <p> Set the request-scope or session-scope attribute name under which
* our form bean is accessed, if it is different from the form bean's
* specified <code>name</code>.
*
* @param attribute the request-scope or session-scope attribute name
* under which our form bean is access.
*/
public void setAttribute(String attribute) {
if (configured) {
throw new IllegalStateException("Configuration is frozen");
}
this.attribute = attribute;
}
/**
* <p>Accessor for cancellable property</p>
*
* @return True if Action can be cancelled
*/
public boolean getCancellable() {
return (this.cancellable);
}
/**
* <p>Mutator for for cancellable property</p>
*
* @param cancellable
*/
public void setCancellable(boolean cancellable) {
if (configured) {
throw new IllegalStateException("Configuration is frozen");
}
this.cancellable = cancellable;
this.cancellableSet = true;
}
/**
* <p>Returns the path of the ActionConfig that this object should inherit
* properties from.</p>
*
* @return the path of the ActionConfig that this object should inherit
* properties from.
*/
public String getExtends() {
return (this.inherit);
}
/**
* <p>Set the path of the ActionConfig that this object should inherit
* properties from.</p>
*
* @param inherit the path of the ActionConfig that this object should
* inherit properties from.
*/
public void setExtends(String inherit) {
if (configured) {
throw new IllegalStateException("Configuration is frozen");
}
this.inherit = inherit;
}
public boolean isExtensionProcessed() {
return extensionProcessed;
}
/**
* <p> Returns context-relative path of the web application resource that
* will process this request.
*
* @return context-relative path of the web application resource that will
* process this request.
*/
public String getForward() {
return (this.forward);
}
/**
* <p> Set the context-relative path of the web application resource that
* will process this request. Exactly one of <code>forward</code>,
* <code>include</code>, or <code>type</code> must be specified.
*
* @param forward context-relative path of the web application resource
* that will process this request.
*/
public void setForward(String forward) {
if (configured) {
throw new IllegalStateException("Configuration is frozen");
}
this.forward = forward;
}
/**
* <p> Context-relative path of the web application resource that will
* process this request.
*
* @return Context-relative path of the web application resource that will
* process this request.
*/
public String getInclude() {
return (this.include);
}
/**
* <p> Set context-relative path of the web application resource that will
* process this request. Exactly one of <code>forward</code>,
* <code>include</code>, or <code>type</code> must be specified.
*
* @param include context-relative path of the web application resource
* that will process this request.
*/
public void setInclude(String include) {
if (configured) {
throw new IllegalStateException("Configuration is frozen");
}
this.include = include;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -