Return-Path:
* Looks for a hidden identification field that specifies the original value of the checkbox.
* If the checkbox isn't submitted, insert it into the parameters as if it was with the value
* of 'false'.
+ *
* This interceptor clears the HttpSession.
- *
+ *
+ *
*
- *
+ *
*
- *
+ *
*
*/
public class CheckboxInterceptor extends AbstractInterceptor {
http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
index aa4f3e5..9bf7699 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
@@ -31,19 +31,18 @@ import java.util.Map;
/**
*
- *
+ *
Interceptor parameters:
* * * *Example:
* ** http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java index c25180b..771ed63 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java @@ -42,25 +42,37 @@ import java.util.Set; /** * * - * The aim of this intercepter is to set values in the stack/action based on cookie name/value - * of interest. + *+ * The aim of this interceptor is to set values in the stack/action based on cookie name/value + * of interest. + *
* + ** If an asterisk is present in cookiesName parameter, it will be assume that * all cookies name are to be injected into struts' action, even though - * cookiesName is comma-separated by other values, e.g. (cookie1,*,cookie2).
+ * cookiesName is comma-separated by other values, e.g. (cookie1,*,cookie2). + * * + ** If cookiesName is left empty it will assume that no cookie will be injected - * into Struts' action.
+ * into Struts' action. + * * + ** If an asterisk is present in cookiesValue parameter, it will assume that all * cookies name irrespective of its value will be injected into Struts' action so - * long as the cookie name matches those specified in cookiesName parameter.
+ * long as the cookie name matches those specified in cookiesName parameter. + * * + ** If cookiesValue is left empty it will assume that all cookie that match the cookieName - * parameter will be injected into Struts' action.
+ * parameter will be injected into Struts' action. + * * + ** The action could implement {@link CookiesAware} in order to have a {@link Map} - * of filtered cookies set into it.
+ * of filtered cookies set into it. + * * * * http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java index 6f604d0..8bdbc4e 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java @@ -33,21 +33,24 @@ import javax.servlet.http.HttpSession; /** * * + ** This interceptor creates the HttpSession if it doesn't exist, also SessionMap is recreated and put in ServletActionContext. - *
+ * + * + ** This is particular useful when using the <@s.token> tag in freemarker templates. * The tag do require that a HttpSession is already created since freemarker commits * the response to the client immediately. - * + *
* * - * Interceptor parameters: + *Interceptor parameters:
* * * * *
Example:
* ** @@ -76,8 +77,6 @@ import javax.servlet.http.HttpSession; * * *- * - * @version $Date$ $Id$ */ public class CreateSessionInterceptor extends AbstractInterceptor { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java index 8b107ee..5add14a 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java @@ -40,47 +40,54 @@ import java.util.Map; /** * - * + *
* The ExecuteAndWaitInterceptor is great for running long-lived actions in the background while showing the user a nice * progress meter. This also prevents the HTTP request from timing out when the action takes more than 5 or 10 minutes. + *
* - * Using this interceptor is pretty straight forward. Assuming that you are including struts-default.xml, this + *Using this interceptor is pretty straight forward. Assuming that you are including struts-default.xml, this * interceptor is already configured but is not part of any of the default stacks. Because of the nature of this * interceptor, it must be the last interceptor in the stack. + *
* - * This interceptor works on a per-session basis. That means that the same action name (myLongRunningAction, in the + *This interceptor works on a per-session basis. That means that the same action name (myLongRunningAction, in the * above example) cannot be run more than once at a time in a given session. On the initial request or any subsequent * requests (before the action has completed), the wait result will be returned. The wait result is * responsible for issuing a subsequent request back to the action, giving the effect of a self-updating progress * meter. + *
* - * If no "wait" result is found, Struts will automatically generate a wait result on the fly. This result is + *If no "wait" result is found, Struts will automatically generate a wait result on the fly. This result is * written in FreeMarker and cannot run unless FreeMarker is installed. If you don't wish to deploy with FreeMarker, you * must provide your own wait result. This is generally a good thing to do anyway, as the default wait page is very * plain. + *
* - * Whenever the wait result is returned, the action that is currently running in the background will be placed on + *Whenever the wait result is returned, the action that is currently running in the background will be placed on * top of the stack. This allows you to display progress data, such as a count, in the wait page. By making the wait * page automatically reload the request to the action (which will be short-circuited by the interceptor), you can give * the appearance of an automatic progress meter. + *
* - * This interceptor also supports using an initial wait delay. An initial delay is a time in milliseconds we let the + *This interceptor also supports using an initial wait delay. An initial delay is a time in milliseconds we let the
* server wait before the wait page is shown to the user. During the wait this interceptor will wake every 100 millis
* to check if the background process is done premature, thus if the job for some reason doesn't take to long the wait
* page is not shown to the user.
*
This is useful for e.g. search actions that have a wide span of execution time. Using a delay time of 2000
* millis we ensure the user is presented fast search results immediately and for the slow results a wait page is used.
+ *
Important: Because the action will be running in a separate thread, you can't use ActionContext because it * is a ThreadLocal. This means if you need to access, for example, session data, you need to implement SessionAware * rather than calling ActionContext.getSession(). + *
* - * The thread kicked off by this interceptor will be named in the form actionNameBackgroundProcess. + *The thread kicked off by this interceptor will be named in the form actionNameBackgroundProcess. * For example, the search action would run as a thread named searchBackgroundProcess. - * + *
* * - * Interceptor parameters: + *Interceptor parameters:
* * * @@ -94,20 +101,18 @@ import java.util.Map; * * * - * Extending the interceptor: - * - * + *Extending the interceptor:
* * - * + ** If you wish to make special preparations before and/or after the invocation of the background thread, you can extend * the BackgroundProcess class and implement the beforeInvocation() and afterInvocation() methods. This may be useful * for obtaining and releasing resources that the background process will need to execute successfully. To use your * background process extension, extend ExecuteAndWaitInterceptor and implement the getNewBackgroundProcess() method. - * + *
* * - * Example code: + *Example code:
* ** @@ -131,9 +136,11 @@ import java.util.Map; * </html> ** - * Example code2: + *
Example code2:
+ ** This example will wait 2 second (2000 millis) before the wait page is shown to the user. Therefore * if the long process didn't last long anyway the user isn't shown a wait page. + *
* ** <action name="someAction" class="com.examples.SomeAction"> @@ -146,10 +153,12 @@ import java.util.Map; * </action> ** - * Example code3: + *
Example code3:
+ ** This example will wait 1 second (1000 millis) before the wait page is shown to the user. * And at every 50 millis this interceptor will check if the background process is done, if so * it will return before the 1 second has elapsed, and the user isn't shown a wait page. + *
* ** <action name="someAction" class="com.examples.SomeAction"> @@ -303,13 +312,17 @@ public class ExecuteAndWaitInterceptor extends MethodFilterInterceptor { } /** + ** Performs the initial delay. - *
+ * + * + ** When this interceptor is executed for the first time this methods handles any provided initial delay. * An initial delay is a time in milliseconds we let the server wait before we continue. *
* * @param bp the background process * @throws InterruptedException is thrown by Thread.sleep http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java index 5e12df0..644203a 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java @@ -40,79 +40,81 @@ import java.util.*; /** * - * + *
During the wait this interceptor will wake every 100 millis to check if the background * process is done premature, thus if the job for some reason doesn't take to long the wait * page is not shown to the user. + ** Interceptor that is based off of {@link MultiPartRequestWrapper}, which is automatically applied for any request that * includes a file. It adds the following parameters, where [File Name] is the name given to the file uploaded by the * HTML form: - *
+ * *
You can get access to these files by merely providing setters in your action that correspond to any of the three
* patterns above, such as setDocument(File document), setDocumentContentType(String contentType), etc.
*
See the example code section.
- *
This interceptor will add several field errors, assuming that the action implements {@link ValidationAware}. * These error messages are based on several i18n values stored in struts-messages.properties, a default i18n file * processed for all i18n requests. You can override the text of these messages by providing text for the following * keys: - *
+ * + * *Interceptor parameters:
+ * * - * + * *Extending the interceptor:
+ * + * + * * - * + ** You can extend this interceptor and override the acceptFile method to provide more control over which files * are supported and which are not. - *
+ * * - * - * Example code: - * + * + *Example code:
+ * ** * <action name="doUpload" class="com.example.UploadAction"> @@ -122,13 +124,13 @@ import java.util.*; * </action> * *- * + * * - * + *
* You must set the encoding to multipart/form-data
in the form where the user selects the file to upload.
- *
* * <s:form action="doUpload" method="post" enctype="multipart/form-data"> @@ -137,10 +139,11 @@ import java.util.*; * </s:form> * *- * + *
* And then in your action code you'll have access to the File object if you provide setters according to the * naming convention documented in the start. - *
+ * + * ** * package com.example; http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java index 2112401..d250a8f 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java @@ -32,29 +32,31 @@ import java.util.Map; /** * + ** This interceptor extends the original xwork i18n interceptor * and adds functionality to support cookies. + *
* * * * - * + * *
* An interceptor to store a {@link ValidationAware} action's messages / errors and field errors into * HTTP Session, such that it will be retrievable at a later stage. This allows the action's message / * errors and field errors to be available longer that just the particular HTTP request. + *
* + ** If no session exists, nothing will be stored and can be retrieved later. In other terms, * the application is responsible to open the session. + *
* - * - * + ** In the 'STORE' mode, the interceptor will store the {@link ValidationAware} action's message / errors * and field errors into HTTP session. + *
* - * - * + ** In the 'RETRIEVE' mode, the interceptor will retrieve the stored action's message / errors and field * errors and put them back into the {@link ValidationAware} action. - * - *
+ * * + ** In the 'AUTOMATIC' mode, the interceptor will always retrieve the stored action's message / errors * and field errors and put them back into the {@link ValidationAware} action, and after Action execution, * if the {@link com.opensymphony.xwork2.Result} is an instance of {@link ServletRedirectResult}, the action's message / errors * and field errors into automatically be stored in the HTTP session.. + *
* - * - * + ** The interceptor does nothing in the 'NONE' mode, which is the default. + *
* - * - * - * The operation mode could be switched using :- - * 1] Setting the iterceptor parameter eg. + *
+ * The operation mode could be switched using:
+ * 1] Setting the interceptor parameter eg.
+ *
* <action name="submitApplication" ...> * <interceptor-ref name="store"> @@ -79,7 +82,10 @@ import java.util.Map; * </action> ** + *
* 2] Through request parameter (allowRequestParameterSwitch must be 'true' which is the default) + *
+ * ** // the request will have the operation mode in 'STORE' * http://localhost:8080/context/submitApplication.action?operationMode=STORE @@ -101,11 +107,12 @@ import java.util.Map; * * * - * * * + *+ * The following method could be overridden: + *
* - * The following method could be overriden :- *
* With the example above, 'submitApplication.action' will have the action messages / errors / field errors stored * in the HTTP Session. Later when needed, (in this case, when 'applicationFailed.action' is fired, it * will get the action messages / errors / field errors stored in the HTTP Session and put them back into * the action. - * + *
* - * - * @version $Date$ $Id$ */ public class MessageStoreInterceptor extends AbstractInterceptor { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java b/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java index 6e53960..c440946 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java @@ -25,15 +25,20 @@ import java.util.Map; /** + ** This interface gives actions an alternative way of receiving input parameters. The map will - * contain all input parameters as name/value entries. Actions that need this should simply implement it.
- *
+ * contain all input parameters as name/value entries. Actions that need this should simply implement it. + * + * + ** One common use for this is to have the action propagate parameters to internally instantiated data - * objects.
- *
+ * objects. + * + * + ** Note that all parameter values for a given name will be returned, so the type of the objects in * the map is java.lang.String[]. - * + *
*/ public interface ParameterAware { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/RequestAware.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/RequestAware.java b/core/src/main/java/org/apache/struts2/interceptor/RequestAware.java index 666f891..2a13300 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/RequestAware.java +++ b/core/src/main/java/org/apache/struts2/interceptor/RequestAware.java @@ -24,9 +24,13 @@ package org.apache.struts2.interceptor; import java.util.Map; /** - * Actions that want access to the current serlvet request attributes should implement this interface. + *+ * Actions that want access to the current servlet request attributes should implement this interface. + *
* - * This interface is only relevant if the Action is used in a servlet environment. + *+ * This interface is only relevant if the Action is used in a servlet environment. + *
*/ public interface RequestAware { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java index a8fce67..6518b7c 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java @@ -35,10 +35,12 @@ import java.util.List; /** * + ** This interceptor ensures that the action will only be executed if the user has the correct role. + *
* * - * Interceptor parameters: + *Interceptor parameters:
* * * @@ -60,7 +62,10 @@ import java.util.List; * * * + ** There are three extensions to the existing interceptor: + *
+ * ** This is designed to solve a few simple issues related to wizard-like functionality in Struts. One of those issues is * that some applications have a application-wide parameters commonly used, such pageLen (used for records per * page). Rather than requiring that each action check if such parameters are supplied, this interceptor can look for * specified parameters and pull them out of the session. + *
* - * This works by setting listed properties at action start with values from session/application attributes keyed + *This works by setting listed properties at action start with values from session/application attributes keyed * after the action's class, the action's name, or any supplied key. After action is executed all the listed properties * are taken back and put in session or application context. + *
* - * To make sure that each execution of the action is consistent it makes use of session-level locking. This way it + *To make sure that each execution of the action is consistent it makes use of session-level locking. This way it * guarantees that each action execution is atomic at the session level. It doesn't guarantee application level * consistency however there has yet to be enough reasons to do so. Application level consistency would also be a big * performance overkill. + *
* - * Note that this interceptor takes a snapshot of action properties just before result is presented (using a {@link + *Note that this interceptor takes a snapshot of action properties just before result is presented (using a {@link * PreResultListener}), rather than after action is invoked. There is a reason for that: At this moment we know that * action's state is "complete" as it's values may depend on the rest of the stack and specifically - on the values of * nested interceptors. + *
* * * - * Interceptor parameters: + *Interceptor parameters:
* * * @@ -110,17 +114,15 @@ import java.util.Map; * * * - * Extending the interceptor: - * - * + *Extending the interceptor:
* * * - * There are no know extension points for this interceptor. + *There are no know extension points for this interceptor.
* * * - * Example code: + *Example code:
* ** http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/ServletConfigInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/ServletConfigInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ServletConfigInterceptor.java index 12f3cbf..3a3f132 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ServletConfigInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ServletConfigInterceptor.java @@ -38,12 +38,14 @@ import com.opensymphony.xwork2.interceptor.AbstractInterceptor; /** * - * + ** An interceptor which sets action properties based on the interfaces an action implements. For example, if the action * implements {@link ParameterAware} then the action context's parameter map will be set on it. + *
* - * This interceptor is designed to set all properties an action needs if it's aware of servlet parameters, the + *This interceptor is designed to set all properties an action needs if it's aware of servlet parameters, the * servlet context, the session, etc. Interfaces that it supports are: + *
* *
Interceptor parameters:
* * * @@ -79,17 +81,15 @@ import com.opensymphony.xwork2.interceptor.AbstractInterceptor; * * * - * Extending the interceptor: - * - * + *Extending the interceptor:
* * * - * There are no known extension points for this interceptor. + *There are no known extension points for this interceptor.
* * * - * Example code: + *Example code:
* ** http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/ServletRequestAware.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/ServletRequestAware.java b/core/src/main/java/org/apache/struts2/interceptor/ServletRequestAware.java index 7adb5dc..814864c 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ServletRequestAware.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ServletRequestAware.java @@ -25,13 +25,18 @@ import javax.servlet.http.HttpServletRequest; /** - * All Actions that want to have access to the servlet request object must implement this interface.- *
- * This interface is only relevant if the Action is used in a servlet environment.- *
+ *+ * All Actions that want to have access to the servlet request object must implement this interface. + *
+ * + *+ * This interface is only relevant if the Action is used in a servlet environment. + *
+ * + ** Note that using this interface makes the Action tied to a servlet environment, so it should be * avoided if possible since things like unit testing will become more difficult. - * + *
*/ public interface ServletRequestAware { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/ServletResponseAware.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/ServletResponseAware.java b/core/src/main/java/org/apache/struts2/interceptor/ServletResponseAware.java index 5674c69..2fa5537 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ServletResponseAware.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ServletResponseAware.java @@ -25,13 +25,16 @@ import javax.servlet.http.HttpServletResponse; /** - * All Actions that want to have access to the servlet response object must implement this interface.- *
- * This interface is only relevant if the Action is used in a servlet environment.- *
+ *+ * All Actions that want to have access to the servlet response object must implement this interface. + *
+ *+ * This interface is only relevant if the Action is used in a servlet environment. + *
+ ** Note that using this interface makes the Action tied to a servlet environment, so it should be * avoided if possible since things like unit testing will become more difficult. - * + *
*/ public interface ServletResponseAware { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/SessionAware.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/SessionAware.java b/core/src/main/java/org/apache/struts2/interceptor/SessionAware.java index 4791f18..ea101bb 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/SessionAware.java +++ b/core/src/main/java/org/apache/struts2/interceptor/SessionAware.java @@ -25,13 +25,16 @@ import java.util.Map; /** - * Actions that want access to the user's HTTP session attributes should implement this interface.- *
+ *+ * Actions that want access to the user's HTTP session attributes should implement this interface. + *
+ ** This will give them access to a Map where they can put objects that can be made available - * to subsequent requests.
- * + * to subsequent requests. + * + ** Typical uses may be cached user data such as name, or a shopping cart. - * + *
*/ public interface SessionAware { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/StrutsConversionErrorInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/StrutsConversionErrorInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/StrutsConversionErrorInterceptor.java index 7998489..aad8d76 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/StrutsConversionErrorInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/StrutsConversionErrorInterceptor.java @@ -28,14 +28,14 @@ import com.opensymphony.xwork2.util.ValueStack; /** * - * + ** This interceptor extends {@link ConversionErrorInterceptor} but only adds conversion errors from the ActionContext to * the field errors of the action if the field value is not null, "", or {""} (a size 1 String array with only an empty * String). See {@link ConversionErrorInterceptor} for more information, as well as the Type Conversion documentation. - * + *
* * - * Interceptor parameters: + *Interceptor parameters:
* * * @@ -47,14 +47,12 @@ import com.opensymphony.xwork2.util.ValueStack; * * * - * Extending the interceptor: - * - * + *Extending the interceptor:
* * - * + ** There are no known extension points for this interceptor. - * + *
* * *http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/TokenInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/TokenInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/TokenInterceptor.java index 229fcaf..7854213 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/TokenInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/TokenInterceptor.java @@ -33,38 +33,39 @@ import javax.servlet.http.HttpSession; /** * - * + ** Ensures that only one request per token is processed. This interceptor can make sure that back buttons and double * clicks don't cause un-intended side affects. For example, you can use this to prevent careless users who might double * click on a "checkout" button at an online store. This interceptor uses a fairly primitive technique for when an * invalid token is found: it returns the result invalid.token, which can be mapped in your action configuration. * A more complex implementation, {@link TokenSessionStoreInterceptor}, can provide much better logic for when invalid * tokens are found. + *
* - * - * + ** Note: To set a token in your form, you should use the token tag. This tag is required and must be used * in the forms that submit to actions protected by this interceptor. Any request that does not provide a token (using * the token tag) will be processed as a request with an invalid token. + *
* - * - * + ** Internationalization Note: The following key could be used to internationalized the action errors generated * by this token interceptor + *
* *
* NOTE: As this method extends off MethodFilterInterceptor, it is capable of
* deciding if it is applicable only to selective methods in the action class. See
* MethodFilterInterceptor
for more info.
+ *
Interceptor parameters:
* * * @@ -76,19 +77,17 @@ import javax.servlet.http.HttpSession; * * * - * Extending the interceptor: - * - * + *Extending the interceptor:
* * - * + ** While not very common for users to extend, this interceptor is extended by the {@link TokenSessionStoreInterceptor}. * The {@link #handleInvalidToken} and {@link #handleValidToken} methods are protected and available for more * interesting logic, such as done with the token session interceptor. - * + *
* * - * Example code: + *Example code:
* ** http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/TokenSessionStoreInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/TokenSessionStoreInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/TokenSessionStoreInterceptor.java index 871f24d..4ad4431 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/TokenSessionStoreInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/TokenSessionStoreInterceptor.java @@ -37,23 +37,24 @@ import java.util.Map; /** * - * + ** This interceptor builds off of the {@link TokenInterceptor}, providing advanced logic for handling invalid tokens. * Unlike the normal token interceptor, this interceptor will attempt to provide intelligent fail-over in the event of * multiple requests using the same session. That is, it will block subsequent requests until the first request is * complete, and then instead of returning the invalid.token code, it will attempt to display the same response * that the original, valid action invocation would have displayed if no multiple requests were submitted in the first * place. + *
* - * - * + ** NOTE: As this method extends off MethodFilterInterceptor, it is capable of * deciding if it is applicable only to selective methods in the action class. See *
* * * - * Interceptor parameters: + *MethodFilterInterceptor
for more info. + *Interceptor parameters:
* * * @@ -65,17 +66,15 @@ import java.util.Map; * * * - * Extending the interceptor: - * - * + *Extending the interceptor:
* * - * + ** There are no known extension points for this interceptor. - * + *
* * - * Example code: + *Example code:
* ** http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java index 33b19f4..6eed280 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java @@ -49,11 +49,15 @@ import java.util.*; /** * + ** Provides several different debugging screens to provide insight into the * data behind the page. + *
* + ** The value of the 'debug' request parameter determines * the screen: + *
* *
xml
- Dumps the parameters, context, session, and value
@@ -69,18 +73,20 @@ import java.util.*;
* debug=browser&object=%23parameters+ * Example: + *
* * http://localhost:8080/Welcome.action?debug=xml * - * + ** * This interceptor only is activated when devMode is enabled in * struts.properties. The 'debug' parameter is removed from the parameter list * before the action is executed. All operations occur before the natural * Result has a chance to execute. * + *
*/ public class DebuggingInterceptor extends AbstractInterceptor { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java b/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java index 4745475..d68769e 100644 --- a/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java +++ b/core/src/main/java/org/apache/struts2/result/HttpHeaderResult.java @@ -37,40 +37,41 @@ import java.util.Map; /** * - * + ** A custom Result type for setting HTTP headers and status by optionally evaluating against the ValueStack. * This result can also be used to send and error to the client. All the parameters can be evaluated against the ValueStack. - *
+ * + * * - * + ** This result type takes the following parameters: - *
+ * * - * + * ** Example: - *
+ * ** <result name="success" type="httpheader"> * <param name="status">204</param> * <param name="headers.a">a custom header value</param> * <param name="headers.b">another custom header value</param> * </result> - * + * * <result name="proxyRequired" type="httpheader"> * <param name="error">305</param> * <param name="errorMessage">this action must be accessed through a prozy</param> http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/result/PostbackResult.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/result/PostbackResult.java b/core/src/main/java/org/apache/struts2/result/PostbackResult.java index ee14384..95b3927 100644 --- a/core/src/main/java/org/apache/struts2/result/PostbackResult.java +++ b/core/src/main/java/org/apache/struts2/result/PostbackResult.java @@ -36,12 +36,15 @@ import java.util.Map; /** * + ** A result that renders the current request parameters as a form which * immediately submits a postback * to the specified destination. + *
* - * + ** Parameters: + *
* *
* Examples: + *
** * <action name="registerThirdParty" > http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/result/ServletDispatcherResult.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/result/ServletDispatcherResult.java b/core/src/main/java/org/apache/struts2/result/ServletDispatcherResult.java index 8d20e99..42bfbf3 100644 --- a/core/src/main/java/org/apache/struts2/result/ServletDispatcherResult.java +++ b/core/src/main/java/org/apache/struts2/result/ServletDispatcherResult.java @@ -40,14 +40,17 @@ import java.util.Map; /** * - * + ** Includes or forwards to a view (usually a jsp). Behind the scenes Struts * will use a RequestDispatcher, where the target servlet/JSP receives the same * request/response objects as the original servlet/JSP. Therefore, you can pass * data between them using request.setAttribute() - the Struts action is * available. - *
+ * + * + ** There are three possible ways the result can be executed: + *
* *
This result type takes the following parameters:
* * * @@ -79,7 +82,7 @@ import java.util.Map; * * * - * Example: + *Example:
* ** <result name="success" type="dispatcher"> @@ -87,7 +90,9 @@ import java.util.Map; * </result> ** + *
* This result follows the same rules from {@link StrutsResultSupport}. + *
* * @see javax.servlet.RequestDispatcher */ http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/result/ServletRedirectResult.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/result/ServletRedirectResult.java b/core/src/main/java/org/apache/struts2/result/ServletRedirectResult.java index c3fe70b..7f2e148 100644 --- a/core/src/main/java/org/apache/struts2/result/ServletRedirectResult.java +++ b/core/src/main/java/org/apache/struts2/result/ServletRedirectResult.java @@ -47,7 +47,7 @@ import static javax.servlet.http.HttpServletResponse.SC_FOUND; /** * - * + ** Calls the {@link HttpServletResponse#sendRedirect(String) sendRedirect} * method to the location specified. The response is told to redirect the * browser to the specified location (a new request from the client). The @@ -56,11 +56,11 @@ import static javax.servlet.http.HttpServletResponse.SC_FOUND; * available. This is because actions are built on a single-thread model. The * only way to pass data is through the session or with web parameters * (url?name=value) which can be OGNL expressions. - * + *
* - * + ** This result type takes the following parameters: - * + *
* * ** Example: - * + *
+ * ** * <!-- http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/result/StreamResult.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/result/StreamResult.java b/core/src/main/java/org/apache/struts2/result/StreamResult.java index 8438fbc..7829e3c 100644 --- a/core/src/main/java/org/apache/struts2/result/StreamResult.java +++ b/core/src/main/java/org/apache/struts2/result/StreamResult.java @@ -32,14 +32,14 @@ import java.io.OutputStream; /** * - * + ** A custom Result type for sending raw data (via an InputStream) directly to the * HttpServletResponse. Very useful for allowing users to download content. - * + *
* - * + ** This result type takes the following parameters: - * + *
* * *
getContentType()
to override that parameter for the current action.
*
*
- *
+ * * Example: + *
* ** <result name="success" type="stream"> http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/result/StrutsResultSupport.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/result/StrutsResultSupport.java b/core/src/main/java/org/apache/struts2/result/StrutsResultSupport.java index bdb1b93..06a1f12 100644 --- a/core/src/main/java/org/apache/struts2/result/StrutsResultSupport.java +++ b/core/src/main/java/org/apache/struts2/result/StrutsResultSupport.java @@ -36,11 +36,15 @@ import java.util.Collection; /** * - * + ** A base class for all Struts action execution results. * The "location" param is the default parameter, meaning the most common usage of this result would be: - *
+ * + * + ** This class provides two common parameters for any subclass: + *
+ * *
* NOTE: * The encode param will only have effect when parse is true + *
* * * - * - * * * - * + ** In the struts.xml configuration file, these would be included as: - *
+ * + * ** <result name="success" type="redirect"> * <param name="location">foo.jsp</param> * </result>- * + * * or - * + * *
* <result name="success" type="redirect" > * <param name="location">foo.jsp?url=${myUrl}</param> * <param name="parse">true</param> * <param name="encode">true</param> - * </result>- * - * In the above case, myUrl will be parsed against Ognl Value Stack and then - * URL encoded. - * + * </result> + * + * + *
In the above case, myUrl will be parsed against Ognl Value Stack and then + * URL encoded.1 + *
+ ** or when using the default parameter feature - *
+ * + * *- * <result name="success" type="redirect">foo.jsp</result>- * + * <result name="success" type="redirect">foo.jsp</result> + * + *
* You should subclass this class if you're interested in adding more parameters or functionality * to your Result. If you do subclass this class you will need to - * override {@link #doExecute(String, ActionInvocation)}.
- *
+ * override {@link #doExecute(String, ActionInvocation)}. + * + * + ** Any custom result can be defined in struts.xml as: - *
+ * + * ** <result-types> * ... * <result-type name="myresult" class="com.foo.MyResult" /> - * </result-types>- * - * Please see the {@link com.opensymphony.xwork2.Result} class for more info on Results in general. + * </result-types> + * * + *
+ * Please see the {@link com.opensymphony.xwork2.Result} class for more info on Results in general. + *
* * * @see com.opensymphony.xwork2.Result http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/result/VelocityResult.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/result/VelocityResult.java b/core/src/main/java/org/apache/struts2/result/VelocityResult.java index 810d191..2720209 100644 --- a/core/src/main/java/org/apache/struts2/result/VelocityResult.java +++ b/core/src/main/java/org/apache/struts2/result/VelocityResult.java @@ -53,9 +53,9 @@ import java.io.Writer; * streamed directly to the servlet output. * * - * + ** This result type takes the following parameters: - * + *
* * ** Example: - * - *
+ * + ** */ public class VelocityResult extends StrutsResultSupport { @@ -170,8 +172,9 @@ public class VelocityResult extends StrutsResultSupport { /** * Retrieve the content type for this template. - * + *+ * * <result name="success" type="velocity"> * <param name="location">foo.vm</param> * </result> - *+ * + *
* People can override this method if they want to provide specific content types for specific templates (eg text/xml). + *
* * @return The content type associated with this template (default "text/html") */ @@ -181,8 +184,9 @@ public class VelocityResult extends StrutsResultSupport { /** * Retrieve the encoding for this template. - * + ** People can override this method if they want to provide specific encodings for specific templates. + *
* * @return The encoding associated with this template (defaults to the value of 'struts.i18n.encoding' property) */ http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/util/AttributeMap.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/util/AttributeMap.java b/core/src/main/java/org/apache/struts2/util/AttributeMap.java index 48498e3..4e95cb5 100644 --- a/core/src/main/java/org/apache/struts2/util/AttributeMap.java +++ b/core/src/main/java/org/apache/struts2/util/AttributeMap.java @@ -32,14 +32,17 @@ import java.util.Set; /** * A Map that holds 4 levels of scope. - * - * The scopes are the ones known in the web world.: + *+ * The scopes are the ones known in the web world: + *
+ * ** Since it is an Iterator it can be used by the iterator tag - * + *
*/ public class Counter implements java.util.Iterator, Serializable { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/util/StrutsTypeConverter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/util/StrutsTypeConverter.java b/core/src/main/java/org/apache/struts2/util/StrutsTypeConverter.java index d01ec7a..d37c79f 100644 --- a/core/src/main/java/org/apache/struts2/util/StrutsTypeConverter.java +++ b/core/src/main/java/org/apache/struts2/util/StrutsTypeConverter.java @@ -28,19 +28,22 @@ import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; /** * * + ** Base class for type converters used in Struts. This class provides two abstract methods that are used to convert - * both to and from strings -- the critical functionality that is core to Struts's type coversion system. - * - *
Type converters do not have to use this class. It is merely a helper base class, although it is recommended that + * both to and from strings -- the critical functionality that is core to Struts's type conversion system. + * + *Type converters do not have to use this class. It is merely a helper base class, although it is recommended that * you use this class as it provides the common type conversion contract required for all web-based type conversion. + *
* - * There's a hook (fall back method) calledperformFallbackConversion
of which
+ * There's a hook (fall back method) called performFallbackConversion
of which
* could be used to perform some fallback conversion if convertValue
method of this
* failed. By default it just ask its super class (Ognl's DefaultTypeConverter) to do the conversion.
+ *
To allow the framework to recognize that a conversion error has occurred, throw an XWorkException or * preferable a TypeConversionException. - * + *
* * */ http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/util/StrutsUtil.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/util/StrutsUtil.java b/core/src/main/java/org/apache/struts2/util/StrutsUtil.java index 14265bb..aee854f 100644 --- a/core/src/main/java/org/apache/struts2/util/StrutsUtil.java +++ b/core/src/main/java/org/apache/struts2/util/StrutsUtil.java @@ -144,8 +144,9 @@ public class StrutsUtil { /** * the selectedList objects are matched to the list.listValue - * + ** listKey and listValue are optional, and if not provided, the list item is used + *
* * @param selectedList the name of the action property * that contains the list of selected items http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java index 1508cb7..c4fde80 100644 --- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java +++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java @@ -55,11 +55,13 @@ import java.util.*; /** + ** Static Configuration Manager for the FreemarkerResult's configuration + *
* - * + *+ * Possible extension points are: * - * Possible extension points are :- *
* createConfiguration method
* Create a freemarker Configuration.
- *
* loadSettings method
* Load freemarker settings, default to freemarker.properties (if found in classpath)
- *
* createTemplateLoader method
- * create a freemarker TemplateLoader that loads freemarker template in the following order :-
+ * create a freemarker TemplateLoader that loads freemarker template in the following order:
+ *
* populateContext method
* populate the created model.
- *
+ *
* this implementation + *
+ * *+ * The template locationArg has already been interpolated for any variable substitutions + *
+ ** this method obtains the freemarker configuration and the object wrapper from the provided hooks. * It them implements the template processing workflow by calling the hooks for * preTemplateProcess and postTemplateProcess + *
*/ public void doExecute(String locationArg, ActionInvocation invocation) throws IOException, TemplateException { this.location = locationArg; @@ -230,27 +232,35 @@ public class FreemarkerResult extends StrutsResultSupport { } /** + ** This method is called from {@link #doExecute(String, ActionInvocation)} to obtain the * FreeMarker configuration object that this result will use for template loading. This is a * hook that allows you to custom-configure the configuration object in a subclass, or to fetch * it from an IoC container. - *
+ * + * + ** * The default implementation obtains the configuration from the ConfigurationManager instance. * + *
*/ protected Configuration getConfiguration() throws TemplateException { return freemarkerManager.getConfiguration(ServletActionContext.getServletContext()); } /** + ** This method is called from {@link #doExecute(String, ActionInvocation)} to obtain the * FreeMarker object wrapper object that this result will use for adapting objects into template * models. This is a hook that allows you to custom-configure the wrapper object in a subclass. - *
+ * + * + ** * The default implementation returns {@link Configuration#getObjectWrapper()} * + *
*/ protected ObjectWrapper getObjectWrapper() { return configuration.getObjectWrapper(); @@ -273,9 +283,10 @@ public class FreemarkerResult extends StrutsResultSupport { /** * Build the instance of the ScopesHashModel, including JspTagLib support - * + ** Objects added to the model are - *
+ * + * ** Simple Hash model that also searches other scopes. - *
+ * + * + ** If the key doesn't exist in this hash, this template model tries to * resolve the key within the attributes of the following scopes, * in the order stated: Request, Session, Servlet Context + *
* + ** Updated to subclass AllHttpScopesHashModel.java to incorporate invisible scopes and compatibility with freemarker. + *
*/ public class ScopesHashModel extends SimpleHash implements TemplateModel { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/views/freemarker/StrutsBeanWrapper.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/StrutsBeanWrapper.java b/core/src/main/java/org/apache/struts2/views/freemarker/StrutsBeanWrapper.java index df9d64a..ad1222f 100644 --- a/core/src/main/java/org/apache/struts2/views/freemarker/StrutsBeanWrapper.java +++ b/core/src/main/java/org/apache/struts2/views/freemarker/StrutsBeanWrapper.java @@ -36,17 +36,18 @@ import freemarker.template.TemplateModel; /** * - * + ** The StrutsBeanWrapper extends the default FreeMarker BeansWrapper and provides almost no change in functionality, * except for how it handles maps. Normally, FreeMarker has two modes of operation: either support for friendly * map built-ins (?keys, ?values, etc) but only support for String keys; OR no special built-in support (ie: ?keys * returns the methods on the map instead of the keys) but support for String and non-String keys alike. Struts * provides an alternative implementation that gives us the best of both worlds. + *
* - * It is possible that this special behavior may be confusing or can cause problems. Therefore, you can set the + *It is possible that this special behavior may be confusing or can cause problems. Therefore, you can set the * struts.freemarker.wrapper.altMap property in struts.properties to false, allowing the normal BeansWrapper * logic to take place instead. - * + *
* */ public class StrutsBeanWrapper extends BeansWrapper { http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java b/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java index 8f49856..9828eaf 100644 --- a/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java +++ b/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java @@ -118,9 +118,11 @@ public class VelocityManager { } /** + ** This method is responsible for creating the standard VelocityContext used by all WW2 velocity views. The * following context parameters are defined: - *
+ * + * ** Instantiates a new VelocityEngine. *
- * + ** The following is the default Velocity configuration *
+ * ** resource.loader = file, class * file.resource.loader.path = real path of webapp * class.resource.loader.description = Velocity Classpath Resource Loader * class.resource.loader.class = org.apache.struts2.views.velocity.StrutsResourceLoader *- * + *
* this default configuration can be overridden by specifying a struts.velocity.configfile property in the * struts.properties file. the specified config file will be searched for in the following order: *
+ * ** Construct a proxy adapter for a value that is an existing DOM Node. * This allows arbitrary DOM Node trees to be mixed in with our results. * The proxied nodes are read-only and currently support only * limited types of Nodes including Element, Text, and Attributes. (Other * Node types may be ignored by the proxy and not appear in the result tree). - *
+ * + * + ** // TODO: * NameSpaces are not yet supported. - *
+ * + * + ** This method is primarily for use by the adapter node classes. + *
*/ public Node proxyNode(AdapterNode parent, Node node) { // If the property is a Document, "unwrap" it to the root element http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java index 59f77d0..194d52b 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java @@ -57,13 +57,17 @@ public class StringAdapter extends AbstractAdapterElement { } /** + ** Get the object to be adapted as a String value. - *
+ * + * + ** This method can be overridden by subclasses that wish to use StringAdapter * as a simplified customizable XML adapter for Java types. A subclass can * enable parsing of the value string as containing XML text via the * setParseStringAsXML() method and then override getStringValue() to return a * String containing the custom formatted XML. + *
*/ protected String getStringValue() { return getPropertyValue().toString(); http://git-wip-us.apache.org/repos/asf/struts/blob/eb564a25/core/src/main/resources/org/apache/struts2/interceptor/wait.ftl ---------------------------------------------------------------------- diff --git a/core/src/main/resources/org/apache/struts2/interceptor/wait.ftl b/core/src/main/resources/org/apache/struts2/interceptor/wait.ftl index ff87ccb..83bf03c 100644 --- a/core/src/main/resources/org/apache/struts2/interceptor/wait.ftl +++ b/core/src/main/resources/org/apache/struts2/interceptor/wait.ftl @@ -26,8 +26,8 @@ Please wait while we process your request... - - +This page will reload automatically and display your request when it is completed. +