01: /*
02: * $Id: UrlController.java 471754 2006-11-06 14:55:09Z husted $
03: *
04: * Licensed to the Apache Software Foundation (ASF) under one
05: * or more contributor license agreements. See the NOTICE file
06: * distributed with this work for additional information
07: * regarding copyright ownership. The ASF licenses this file
08: * to you under the Apache License, Version 2.0 (the
09: * "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:
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(ComponentContext tileContext,
61: HttpServletRequest request, HttpServletResponse response,
62: ServletContext servletContext) throws ServletException,
63: IOException {
64:
65: RequestDispatcher rd = servletContext.getRequestDispatcher(url);
66: if (rd == null) {
67: throw new ServletException("Controller can't find url '"
68: + url + "'.");
69: }
70:
71: rd.include(request, response);
72: }
73:
74: /**
75: * @see org.apache.struts.tiles.Controller#execute(org.apache.struts.tiles.ComponentContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.ServletContext)
76: */
77: public void execute(ComponentContext tileContext,
78: HttpServletRequest request, HttpServletResponse response,
79: ServletContext servletContext) throws Exception {
80:
81: RequestDispatcher rd = servletContext.getRequestDispatcher(url);
82: if (rd == null) {
83: throw new ServletException("Controller can't find url '"
84: + url + "'.");
85: }
86:
87: rd.include(request, response);
88:
89: }
90:
91: }
|