01: /* ***** BEGIN LICENSE BLOCK *****
02: * Version: MPL 1.1
03: * The contents of this file are subject to the Mozilla Public License Version
04: * 1.1 (the "License"); you may not use this file except in compliance with
05: * the License. You may obtain a copy of the License at
06: * http://www.mozilla.org/MPL/
07: *
08: * Software distributed under the License is distributed on an "AS IS" basis,
09: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10: * for the specific language governing rights and limitations under the
11: * License.
12: *
13: * The Original Code is Riot.
14: *
15: * The Initial Developer of the Original Code is
16: * Neteye GmbH.
17: * Portions created by the Initial Developer are Copyright (C) 2007
18: * the Initial Developer. All Rights Reserved.
19: *
20: * Contributor(s):
21: * Felix Gnass [fgnass at neteye dot de]
22: *
23: * ***** END LICENSE BLOCK ***** */
24: package org.riotfamily.common.web.view;
25:
26: import java.util.Map;
27:
28: import javax.servlet.http.HttpServletRequest;
29: import javax.servlet.http.HttpServletResponse;
30:
31: import org.riotfamily.common.web.mapping.HandlerUrlResolver;
32: import org.springframework.util.Assert;
33: import org.springframework.web.context.WebApplicationContext;
34: import org.springframework.web.servlet.support.RequestContextUtils;
35: import org.springframework.web.servlet.view.RedirectView;
36:
37: /**
38: * View that sends a redirect to a named handler.
39: *
40: * @see HandlerUrlResolver
41: * @author Felix Gnass [fgnass at neteye dot de]
42: * @since 6.5
43: */
44: public class NamedHandlerRedirectView extends RedirectView {
45:
46: private HandlerUrlResolver handlerUrlResolver;
47:
48: private String handlerName;
49:
50: public NamedHandlerRedirectView(String handlerName) {
51: this (handlerName, null);
52: }
53:
54: public NamedHandlerRedirectView(String handlerName,
55: HandlerUrlResolver handlerUrlResolver) {
56:
57: this .handlerName = handlerName;
58: this .handlerUrlResolver = handlerUrlResolver;
59: }
60:
61: public void render(Map model, HttpServletRequest request,
62: HttpServletResponse response) throws Exception {
63:
64: if (handlerUrlResolver == null) {
65: WebApplicationContext context = RequestContextUtils
66: .getWebApplicationContext(request);
67: handlerUrlResolver = (HandlerUrlResolver) context
68: .getBean("handlerUrlResolver");
69: }
70: String handlerUrl = handlerUrlResolver.getUrlForHandler(
71: request, handlerName, model, null);
72: Assert.notNull(handlerUrl, "Can't resolve URL for handler "
73: + handlerName);
74: setUrl(handlerUrl);
75: setContextRelative(true);
76: super.render(model, request, response);
77: }
78:
79: }
|