KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > riotfamily > components > component > ViewComponent


1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1
3  * The contents of this file are subject to the Mozilla Public License Version
4  * 1.1 (the "License"); you may not use this file except in compliance with
5  * the License. You may obtain a copy of the License at
6  * http://www.mozilla.org/MPL/
7  *
8  * Software distributed under the License is distributed on an "AS IS" basis,
9  * 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) 2006
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.components.component;
25
26 import java.util.Map JavaDoc;
27
28 import javax.servlet.http.HttpServletRequest JavaDoc;
29 import javax.servlet.http.HttpServletResponse JavaDoc;
30
31 import org.riotfamily.common.web.view.ViewResolutionException;
32 import org.riotfamily.common.web.view.ViewResolverHelper;
33 import org.riotfamily.components.ComponentVersion;
34 import org.riotfamily.components.VersionContainer;
35 import org.springframework.web.servlet.ModelAndView;
36 import org.springframework.web.servlet.View;
37 import org.springframework.web.servlet.support.RequestContextUtils;
38
39 /**
40  * Component implementation that resolves a view-name just like Spring's
41  * DispatcherServlet and renders the view passing the ComponentVersion's
42  * properties as model.
43  */

44 public class ViewComponent extends AbstractComponent {
45
46     private String JavaDoc viewName;
47
48     private boolean dynamic = false;
49
50     public void setViewName(String JavaDoc viewName) {
51         this.viewName = viewName;
52     }
53
54     protected void renderInternal(ComponentVersion componentVersion,
55             String JavaDoc positionClassName, HttpServletRequest JavaDoc request,
56             HttpServletResponse JavaDoc response) throws Exception JavaDoc {
57
58         Map JavaDoc model = buildModel(componentVersion);
59         model.put(POSITION_CLASS, positionClassName);
60         model.put(COMPONENT_ID, String.valueOf(componentVersion.getId()));
61         model.put(THIS, componentVersion);
62
63         VersionContainer parentContainer = componentVersion.getContainer().getList().getParent();
64         if (parentContainer != null) {
65             request.setAttribute(PARENT_ID, String.valueOf(parentContainer.getId()));
66         }
67
68         ModelAndView mv = new ModelAndView(viewName, model);
69         try {
70             View view = new ViewResolverHelper(
71                     RequestContextUtils.getWebApplicationContext(request))
72                     .resolveView(request, mv);
73
74             view.render(model, request, response);
75         }
76         catch (ViewResolutionException e) {
77             log.warn("ViewResolutionException - Skipping component ...", e);
78         }
79     }
80
81     public boolean isDynamic() {
82         return this.dynamic;
83     }
84
85     public void setDynamic(boolean dynamic) {
86         this.dynamic = dynamic;
87     }
88
89 }
90
Popular Tags