KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > struts > taglib > logic > RedirectTag


1 /*
2  * $Id: RedirectTag.java 54929 2004-10-16 16:38:42Z germuska $
3  *
4  * Copyright 2000-2004 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19 package org.apache.struts.taglib.logic;
20
21 import java.io.IOException JavaDoc;
22 import java.net.MalformedURLException JavaDoc;
23 import java.util.Map JavaDoc;
24
25 import javax.servlet.http.HttpServletResponse JavaDoc;
26 import javax.servlet.jsp.JspException JavaDoc;
27 import javax.servlet.jsp.tagext.TagSupport JavaDoc;
28
29 import org.apache.struts.util.MessageResources;
30 import org.apache.struts.taglib.TagUtils;
31
32 /**
33  * Generate a URL-encoded redirect to the specified URI.
34  *
35  * @version $Rev: 54929 $ $Date: 2004-10-16 17:38:42 +0100 (Sat, 16 Oct 2004) $
36  */

37 public class RedirectTag extends TagSupport JavaDoc {
38
39     // ------------------------------------------------------------- Properties
40

41     /**
42      * The anchor to be added to the end of the generated hyperlink.
43      */

44     protected String JavaDoc anchor = null;
45
46     public String JavaDoc getAnchor() {
47         return (this.anchor);
48     }
49
50     public void setAnchor(String JavaDoc anchor) {
51         this.anchor = anchor;
52     }
53
54     /**
55      * The logical forward name from which to retrieve the redirect URI.
56      */

57     protected String JavaDoc forward = null;
58
59     public String JavaDoc getForward() {
60         return (this.forward);
61     }
62
63     public void setForward(String JavaDoc forward) {
64         this.forward = forward;
65     }
66
67     /**
68      * The redirect URI.
69      */

70     protected String JavaDoc href = null;
71
72     public String JavaDoc getHref() {
73         return (this.href);
74     }
75
76     public void setHref(String JavaDoc href) {
77         this.href = href;
78     }
79
80     /**
81      * The message resources for this package.
82      */

83     protected static MessageResources messages =
84         MessageResources.getMessageResources(
85             "org.apache.struts.taglib.logic.LocalStrings");
86
87     /**
88      * The JSP bean name for query parameters.
89      */

90     protected String JavaDoc name = null;
91
92     public String JavaDoc getName() {
93         return (this.name);
94     }
95
96     public void setName(String JavaDoc name) {
97         this.name = name;
98     }
99
100     /**
101      * The module-relative page URL (beginning with a slash) to which
102      * this redirect will be rendered.
103      */

104     protected String JavaDoc page = null;
105
106     public String JavaDoc getPage() {
107         return (this.page);
108     }
109
110     public void setPage(String JavaDoc page) {
111         this.page = page;
112     }
113
114     /**
115      * The module-relative action (beginning with a slash) which will be
116      * called by this link
117      */

118     protected String JavaDoc action = null;
119
120     public String JavaDoc getAction() {
121         return (this.action);
122     }
123
124     public void setAction(String JavaDoc action) {
125         this.action = action;
126     }
127
128
129     /**
130      * The module prefix (beginning with a slash) which will be
131      * used to find the action for this link.
132      */

133     protected String JavaDoc module = null;
134
135     public String JavaDoc getModule() {
136         return (this.module);
137     }
138
139     public void setModule(String JavaDoc module) {
140         this.module = module;
141     }
142
143     /**
144      * The single-parameter request parameter name to generate.
145      */

146     protected String JavaDoc paramId = null;
147
148     public String JavaDoc getParamId() {
149         return (this.paramId);
150     }
151
152     public void setParamId(String JavaDoc paramId) {
153         this.paramId = paramId;
154     }
155
156     /**
157      * The single-parameter JSP bean name.
158      */

159     protected String JavaDoc paramName = null;
160
161     public String JavaDoc getParamName() {
162         return (this.paramName);
163     }
164
165     public void setParamName(String JavaDoc paramName) {
166         this.paramName = paramName;
167     }
168
169     /**
170      * The single-parameter JSP bean property.
171      */

172     protected String JavaDoc paramProperty = null;
173
174     public String JavaDoc getParamProperty() {
175         return (this.paramProperty);
176     }
177
178     public void setParamProperty(String JavaDoc paramProperty) {
179         this.paramProperty = paramProperty;
180     }
181
182     /**
183      * The single-parameter JSP bean scope.
184      */

185     protected String JavaDoc paramScope = null;
186
187     public String JavaDoc getParamScope() {
188         return (this.paramScope);
189     }
190
191     public void setParamScope(String JavaDoc paramScope) {
192         this.paramScope = paramScope;
193     }
194
195     /**
196      * The JSP bean property name for query parameters.
197      */

198     protected String JavaDoc property = null;
199
200     public String JavaDoc getProperty() {
201         return (this.property);
202     }
203
204     public void setProperty(String JavaDoc property) {
205         this.property = property;
206     }
207
208     /**
209      * The scope of the bean specified by the name property, if any.
210      */

211     protected String JavaDoc scope = null;
212
213     public String JavaDoc getScope() {
214         return (this.scope);
215     }
216
217     public void setScope(String JavaDoc scope) {
218         this.scope = scope;
219     }
220
221     /**
222      * Include our transaction control token?
223      */

224     protected boolean transaction = false;
225
226     public boolean getTransaction() {
227         return (this.transaction);
228     }
229
230     public void setTransaction(boolean transaction) {
231         this.transaction = transaction;
232     }
233
234     /**
235      * Use character encoding from ServletResponse#getCharacterEncoding
236      * to get bytes of the url string for urlencoding?
237      */

238     protected boolean useLocalEncoding = false;
239     
240     public boolean isUseLocalEncoding() {
241        return useLocalEncoding;
242     }
243
244     public void setUseLocalEncoding(boolean b) {
245        useLocalEncoding = b;
246     }
247
248     // --------------------------------------------------------- Public Methods
249

250     /**
251      * Defer generation until the end of this tag is encountered.
252      *
253      * @exception JspException if a JSP exception has occurred
254      */

255     public int doStartTag() throws JspException JavaDoc {
256
257         return (SKIP_BODY);
258
259     }
260
261     /**
262      * Render the redirect and skip the remainder of this page.
263      *
264      * @exception JspException if a JSP exception has occurred
265      */

266     public int doEndTag() throws JspException JavaDoc {
267
268         this.doRedirect(this.generateRedirectURL());
269
270         return (SKIP_PAGE);
271
272     }
273
274     /**
275      * Calculate the url to redirect to.
276      * @throws JspException
277      * @since Struts 1.2
278      */

279     protected String JavaDoc generateRedirectURL() throws JspException JavaDoc {
280         Map JavaDoc params =
281             TagUtils.getInstance().computeParameters(
282                 pageContext,
283                 paramId,
284                 paramName,
285                 paramProperty,
286                 paramScope,
287                 name,
288                 property,
289                 scope,
290                 transaction);
291
292         String JavaDoc url = null;
293         try {
294             url =
295                 TagUtils.getInstance().computeURLWithCharEncoding(
296                     pageContext,
297                     forward,
298                     href,
299                     page,
300                     action,
301                     module,
302                     params,
303                     anchor,
304                     true,
305                     useLocalEncoding);
306
307         } catch (MalformedURLException JavaDoc e) {
308             TagUtils.getInstance().saveException(pageContext, e);
309             throw new JspException JavaDoc(
310                 messages.getMessage("redirect.url", e.toString()));
311         }
312
313         return url;
314     }
315
316     /**
317      * Redirect to the given url converting exceptions to JspException.
318      * @param url The path to redirect to.
319      * @throws JspException
320      * @since Struts 1.2
321      */

322     protected void doRedirect(String JavaDoc url) throws JspException JavaDoc {
323         HttpServletResponse JavaDoc response =
324             (HttpServletResponse JavaDoc) pageContext.getResponse();
325
326         try {
327             response.sendRedirect(url);
328
329         } catch (IOException JavaDoc e) {
330             TagUtils.getInstance().saveException(pageContext, e);
331             throw new JspException JavaDoc(e.getMessage());
332         }
333     }
334
335     /**
336      * Release any acquired resources.
337      */

338     public void release() {
339
340         super.release();
341         anchor = null;
342         forward = null;
343         href = null;
344         name = null;
345         page = null;
346         action = null;
347         paramId = null;
348         paramName = null;
349         paramProperty = null;
350         paramScope = null;
351         property = null;
352         scope = null;
353
354     }
355
356 }
357
Popular Tags