1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.struts.tiles;
20
21 import java.io.IOException;
22
23 import javax.servlet.RequestDispatcher;
24 import javax.servlet.ServletContext;
25 import javax.servlet.ServletException;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 /***
30 * Tiles controller including a local URL.
31 */
32 public class UrlController implements Controller {
33
34 /***
35 * URL associated with this controller.
36 */
37 protected String url = null;
38
39 /***
40 * Constructor.
41 * @param url URL.
42 */
43 public UrlController(String url) {
44 this.url = url;
45 }
46
47 /***
48 * Method associated to a tile and called immediately before the tile
49 * is included. This implementation calls an <code>Action</code>.
50 * No servlet is set by this method.
51 *
52 * @param tileContext Current tile context.
53 * @param request Current request.
54 * @param response Current response.
55 * @param servletContext Current servlet context.
56 */
57 public void perform(
58 ComponentContext tileContext,
59 HttpServletRequest request,
60 HttpServletResponse response,
61 ServletContext servletContext)
62 throws ServletException, IOException {
63
64 RequestDispatcher rd = servletContext.getRequestDispatcher(url);
65 if (rd == null) {
66 throw new ServletException(
67 "Controller can't find url '" + url + "'.");
68 }
69
70 rd.include(request, response);
71 }
72
73 /***
74 * @see org.apache.struts.tiles.Controller#execute(org.apache.struts.tiles.ComponentContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.ServletContext)
75 */
76 public void execute(
77 ComponentContext tileContext,
78 HttpServletRequest request,
79 HttpServletResponse response,
80 ServletContext servletContext)
81 throws Exception {
82
83 RequestDispatcher rd = servletContext.getRequestDispatcher(url);
84 if (rd == null) {
85 throw new ServletException(
86 "Controller can't find url '" + url + "'.");
87 }
88
89 rd.include(request, response);
90
91 }
92
93 }