View Javadoc
1   /*
2    * $Id$
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  package org.apache.struts.action;
22  
23  import org.apache.struts.config.ForwardConfig;
24  
25  /**
26   * <p>An <strong>ActionForward</strong> represents a destination to which the
27   * controller, RequestProcessor, might be directed to perform a
28   * RequestDispatcher.forward or HttpServletResponse.sendRedirect to, as a
29   * result of processing activities of an Action class. Instances of this class
30   * may be created dynamically as necessary, or configured in association with
31   * an ActionMapping instance for named lookup of potentially multiple
32   * destinations for a particular mapping instance.</p>
33   *
34   * <p>An ActionForward has the following minimal set of properties. Additional
35   * properties can be provided as needed by subclassses.</p>
36   *
37   * <ul>
38   *
39   * <li><strong>contextRelative</strong> - Should the path value be interpreted
40   * as context-relative (instead of module-relative, if it starts with a '/'
41   * character? [false]</li>
42   *
43   * <li><strong>name</strong> - Logical name by which this instance may be
44   * looked up in relationship to a particular ActionMapping. </li>
45   *
46   * <li><strong>path</strong> - Module-relative or context-relative URI to
47   * which control should be forwarded, or an absolute or relative URI to which
48   * control should be redirected.</li>
49   *
50   * <li><strong>redirect</strong> - Set to true if the controller servlet
51   * should call HttpServletResponse.sendRedirect() on the associated path;
52   * otherwise false. [false]</li>
53   *
54   * </ul>
55   *
56   * <p>Since Struts 1.1 this class extends ForwardConfig and inherits the
57   * contextRelative property.
58   *
59   * <p><strong>NOTE</strong> - This class would have been deprecated and
60   * replaced by org.apache.struts.config.ForwardConfig except for the fact that
61   * it is part of the public API that existing applications are using.</p>
62   *
63   * @version $Rev$ $Date: 2005-08-14 17:24:39 -0400 (Sun, 14 Aug 2005)
64   *          $
65   */
66  public class ActionForward extends ForwardConfig {
67      private static final long serialVersionUID = 7849370054972965028L;
68  
69      /**
70       * <p>Construct a new instance with default values.</p>
71       */
72      public ActionForward() {
73          this(null, false);
74      }
75  
76      /**
77       * <p>Construct a new instance with the specified path.</p>
78       *
79       * @param path Path for this instance
80       */
81      public ActionForward(String path) {
82          this(path, false);
83      }
84  
85      /**
86       * <p>Construct a new instance with the specified <code>path</code> and
87       * <code>redirect</code> flag.</p>
88       *
89       * @param path     Path for this instance
90       * @param redirect Redirect flag for this instance
91       */
92      public ActionForward(String path, boolean redirect) {
93          super();
94          setName(null);
95          setPath(path);
96          setRedirect(redirect);
97      }
98  
99      /**
100      * <p>Construct a new instance with the specified <code>name</code>,
101      * <code>path</code> and <code>redirect</code> flag.</p>
102      *
103      * @param name     Name of this instance
104      * @param path     Path for this instance
105      * @param redirect Redirect flag for this instance
106      */
107     public ActionForward(String name, String path, boolean redirect) {
108         super();
109         setName(name);
110         setPath(path);
111         setRedirect(redirect);
112     }
113 
114     /**
115      * <p>Construct a new instance with the specified values.</p>
116      *
117      * @param name     Name of this forward
118      * @param path     Path to which control should be forwarded or
119      *                 redirected
120      * @param redirect Should we do a redirect?
121      * @param module   Module prefix, if any
122      */
123     public ActionForward(String name, String path, boolean redirect,
124         String module) {
125         super();
126         setName(name);
127         setPath(path);
128         setRedirect(redirect);
129         setModule(module);
130     }
131 
132     /**
133      * <p>Construct a new instance based on the values of another
134      * ActionForward.</p>
135      *
136      * @param copyMe An ActionForward instance to copy
137      * @since Struts 1.2.1
138      */
139     public ActionForward(ActionForward copyMe) {
140         this(copyMe.getName(), copyMe.getPath(), copyMe.getRedirect(),
141             copyMe.getModule());
142     }
143 }