1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springbyexample.web.servlet.view.tiles2;
18
19 import java.util.HashMap;
20 import java.util.Iterator;
21 import java.util.Locale;
22 import java.util.Map;
23
24 import javax.servlet.ServletContext;
25 import javax.servlet.ServletException;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 import org.apache.tiles.Attribute;
30 import org.apache.tiles.AttributeContext;
31 import org.apache.tiles.Definition;
32 import org.apache.tiles.TilesContainer;
33 import org.apache.tiles.access.TilesAccess;
34 import org.apache.tiles.context.TilesRequestContext;
35 import org.apache.tiles.impl.BasicTilesContainer;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
38 import org.springframework.js.ajax.AjaxHandler;
39 import org.springframework.js.ajax.SpringJavascriptAjaxHandler;
40 import org.springframework.js.ajax.tiles2.AjaxTilesView;
41 import org.springframework.web.servlet.support.JstlUtils;
42 import org.springframework.web.servlet.support.RequestContext;
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 public class AjaxDynamicTilesView extends AjaxTilesView {
58
59 final Logger logger = LoggerFactory.getLogger(AjaxDynamicTilesView.class);
60
61 final DynamicTilesViewProcessor dynamicTilesViewProcessor = new DynamicTilesViewProcessor();
62 final AjaxHandler ajaxHandler = new SpringJavascriptAjaxHandler();
63
64
65
66
67 protected void renderMergedOutputModel(Map model,
68 HttpServletRequest request, HttpServletResponse response)
69 throws Exception {
70 String beanName = getBeanName();
71 String url = getUrl();
72
73 ServletContext servletContext = getServletContext();
74 TilesContainer container = TilesAccess.getContainer(servletContext);
75 if (container == null) {
76 throw new ServletException("Tiles container is not initialized. " +
77 "Have you added a TilesConfigurer to your web application context?");
78 }
79
80 if (ajaxHandler.isAjaxRequest(request, response)) {
81
82 String definitionName = dynamicTilesViewProcessor.startDynamicDefinition(beanName, url, request, response, container);
83
84 super.renderMergedOutputModel(model, request, response);
85
86 dynamicTilesViewProcessor.endDynamicDefinition(definitionName, beanName, request, response, container);
87 } else {
88 exposeModelAsRequestAttributes(model, request);
89
90 dynamicTilesViewProcessor.renderMergedOutputModel(beanName, url,
91 servletContext, request, response, container);
92 }
93 }
94
95
96
97
98
99
100
101
102
103 @Override
104 public boolean checkResource(Locale locale) throws Exception {
105
106
107
108 return true;
109 }
110
111 }