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