15 changed files with 0 additions and 1069 deletions
@ -1,66 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2012 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
|
|
||||||
import org.apache.tiles.TilesException; |
|
||||||
import org.apache.tiles.context.TilesRequestContext; |
|
||||||
import org.apache.tiles.preparer.PreparerFactory; |
|
||||||
import org.apache.tiles.preparer.ViewPreparer; |
|
||||||
|
|
||||||
import org.springframework.web.context.WebApplicationContext; |
|
||||||
import org.springframework.web.servlet.DispatcherServlet; |
|
||||||
|
|
||||||
/** |
|
||||||
* Abstract implementation of the Tiles2 {@link org.apache.tiles.preparer.PreparerFactory} |
|
||||||
* interface, obtaining the current Spring WebApplicationContext and delegating to |
|
||||||
* {@link #getPreparer(String, org.springframework.web.context.WebApplicationContext)}. |
|
||||||
* |
|
||||||
* @author Juergen Hoeller |
|
||||||
* @since 2.5 |
|
||||||
* @see #getPreparer(String, org.springframework.web.context.WebApplicationContext) |
|
||||||
* @see SimpleSpringPreparerFactory |
|
||||||
* @see SpringBeanPreparerFactory |
|
||||||
* @deprecated as of Spring 4.2, in favor of Tiles 3 |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public abstract class AbstractSpringPreparerFactory implements PreparerFactory { |
|
||||||
|
|
||||||
@Override |
|
||||||
public ViewPreparer getPreparer(String name, TilesRequestContext context) throws TilesException { |
|
||||||
WebApplicationContext webApplicationContext = (WebApplicationContext) context.getRequestScope().get( |
|
||||||
DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE); |
|
||||||
if (webApplicationContext == null) { |
|
||||||
webApplicationContext = (WebApplicationContext) context.getApplicationContext().getApplicationScope().get( |
|
||||||
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); |
|
||||||
if (webApplicationContext == null) { |
|
||||||
throw new IllegalStateException("No WebApplicationContext found: no ContextLoaderListener registered?"); |
|
||||||
} |
|
||||||
} |
|
||||||
return getPreparer(name, webApplicationContext); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Obtain a preparer instance for the given preparer name, |
|
||||||
* based on the given Spring WebApplicationContext. |
|
||||||
* @param name the name of the preparer |
|
||||||
* @param context the current Spring WebApplicationContext |
|
||||||
* @return the preparer instance |
|
||||||
* @throws TilesException in case of failure |
|
||||||
*/ |
|
||||||
protected abstract ViewPreparer getPreparer(String name, WebApplicationContext context) throws TilesException; |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,73 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2012 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
|
|
||||||
import java.util.Map; |
|
||||||
import java.util.concurrent.ConcurrentHashMap; |
|
||||||
|
|
||||||
import org.apache.tiles.TilesException; |
|
||||||
import org.apache.tiles.preparer.NoSuchPreparerException; |
|
||||||
import org.apache.tiles.preparer.PreparerException; |
|
||||||
import org.apache.tiles.preparer.ViewPreparer; |
|
||||||
|
|
||||||
import org.springframework.web.context.WebApplicationContext; |
|
||||||
|
|
||||||
/** |
|
||||||
* Tiles2 {@link org.apache.tiles.preparer.PreparerFactory} implementation |
|
||||||
* that expects preparer class names and builds preparer instances for those, |
|
||||||
* creating them through the Spring ApplicationContext in order to apply |
|
||||||
* Spring container callbacks and configured Spring BeanPostProcessors. |
|
||||||
* |
|
||||||
* @author Juergen Hoeller |
|
||||||
* @since 2.5 |
|
||||||
* @see SpringBeanPreparerFactory |
|
||||||
* @deprecated as of Spring 4.2, in favor of Tiles 3 |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class SimpleSpringPreparerFactory extends AbstractSpringPreparerFactory { |
|
||||||
|
|
||||||
/** Cache of shared ViewPreparer instances: bean name -> bean instance */ |
|
||||||
private final Map<String, ViewPreparer> sharedPreparers = new ConcurrentHashMap<String, ViewPreparer>(16); |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
protected ViewPreparer getPreparer(String name, WebApplicationContext context) throws TilesException { |
|
||||||
// Quick check on the concurrent map first, with minimal locking.
|
|
||||||
ViewPreparer preparer = this.sharedPreparers.get(name); |
|
||||||
if (preparer == null) { |
|
||||||
synchronized (this.sharedPreparers) { |
|
||||||
preparer = this.sharedPreparers.get(name); |
|
||||||
if (preparer == null) { |
|
||||||
try { |
|
||||||
Class<?> beanClass = context.getClassLoader().loadClass(name); |
|
||||||
if (!ViewPreparer.class.isAssignableFrom(beanClass)) { |
|
||||||
throw new PreparerException( |
|
||||||
"Invalid preparer class [" + name + "]: does not implement ViewPreparer interface"); |
|
||||||
} |
|
||||||
preparer = (ViewPreparer) context.getAutowireCapableBeanFactory().createBean(beanClass); |
|
||||||
this.sharedPreparers.put(name, preparer); |
|
||||||
} |
|
||||||
catch (ClassNotFoundException ex) { |
|
||||||
throw new NoSuchPreparerException("Preparer class [" + name + "] not found", ex); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
return preparer; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,44 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2009 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
|
|
||||||
import org.apache.tiles.TilesException; |
|
||||||
import org.apache.tiles.preparer.ViewPreparer; |
|
||||||
|
|
||||||
import org.springframework.web.context.WebApplicationContext; |
|
||||||
|
|
||||||
/** |
|
||||||
* Tiles2 {@link org.apache.tiles.preparer.PreparerFactory} implementation |
|
||||||
* that expects preparer bean names and obtains preparer beans from the |
|
||||||
* Spring ApplicationContext. The full bean creation process will be in |
|
||||||
* the control of the Spring application context in this case, allowing |
|
||||||
* for the use of scoped beans etc. |
|
||||||
* |
|
||||||
* @author Juergen Hoeller |
|
||||||
* @since 2.5 |
|
||||||
* @see SimpleSpringPreparerFactory |
|
||||||
* @deprecated as of Spring 4.2, in favor of Tiles 3 |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class SpringBeanPreparerFactory extends AbstractSpringPreparerFactory { |
|
||||||
|
|
||||||
@Override |
|
||||||
protected ViewPreparer getPreparer(String name, WebApplicationContext context) throws TilesException { |
|
||||||
return context.getBean(name, ViewPreparer.class); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,62 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2009 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
|
|
||||||
import java.util.Locale; |
|
||||||
import javax.servlet.http.HttpServletRequest; |
|
||||||
import javax.servlet.jsp.PageContext; |
|
||||||
|
|
||||||
import org.apache.tiles.context.TilesRequestContext; |
|
||||||
import org.apache.tiles.jsp.context.JspTilesRequestContext; |
|
||||||
import org.apache.tiles.locale.impl.DefaultLocaleResolver; |
|
||||||
import org.apache.tiles.servlet.context.ServletTilesRequestContext; |
|
||||||
|
|
||||||
import org.springframework.web.servlet.support.RequestContextUtils; |
|
||||||
|
|
||||||
/** |
|
||||||
* Tiles LocaleResolver adapter that delegates to a Spring |
|
||||||
* {@link org.springframework.web.servlet.LocaleResolver}, |
|
||||||
* exposing the DispatcherServlet-managed locale. |
|
||||||
* |
|
||||||
* <p>This adapter gets automatically registered by {@link TilesConfigurer}. |
|
||||||
* If you are using standard Tiles bootstrap, specify the name of this class
|
|
||||||
* as value for the init-param "org.apache.tiles.locale.LocaleResolver". |
|
||||||
* |
|
||||||
* @author Juergen Hoeller |
|
||||||
* @since 2.5 |
|
||||||
* @see org.apache.tiles.definition.UrlDefinitionsFactory#LOCALE_RESOLVER_IMPL_PROPERTY |
|
||||||
* @deprecated as of Spring 4.2, in favor of Tiles 3 |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class SpringLocaleResolver extends DefaultLocaleResolver { |
|
||||||
|
|
||||||
@Override |
|
||||||
public Locale resolveLocale(TilesRequestContext context) { |
|
||||||
if (context instanceof JspTilesRequestContext) { |
|
||||||
PageContext pc = ((JspTilesRequestContext) context).getPageContext(); |
|
||||||
return RequestContextUtils.getLocale((HttpServletRequest) pc.getRequest()); |
|
||||||
} |
|
||||||
else if (context instanceof ServletTilesRequestContext) { |
|
||||||
HttpServletRequest request = ((ServletTilesRequestContext) context).getRequest(); |
|
||||||
if (request != null) { |
|
||||||
return RequestContextUtils.getLocale(request); |
|
||||||
} |
|
||||||
} |
|
||||||
return super.resolveLocale(context); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,74 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2014 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
|
|
||||||
import java.io.IOException; |
|
||||||
import java.net.URL; |
|
||||||
import java.util.LinkedHashSet; |
|
||||||
import java.util.Set; |
|
||||||
import javax.servlet.ServletContext; |
|
||||||
|
|
||||||
import org.apache.tiles.servlet.context.ServletTilesApplicationContext; |
|
||||||
|
|
||||||
import org.springframework.core.io.Resource; |
|
||||||
import org.springframework.core.io.support.ResourcePatternResolver; |
|
||||||
import org.springframework.util.CollectionUtils; |
|
||||||
import org.springframework.util.ObjectUtils; |
|
||||||
import org.springframework.web.context.support.ServletContextResourcePatternResolver; |
|
||||||
|
|
||||||
/** |
|
||||||
* Spring-specific subclass of the Tiles ServletTilesApplicationContext. |
|
||||||
* |
|
||||||
* @author Juergen Hoeller |
|
||||||
* @since 4.0.1 |
|
||||||
* @deprecated as of Spring 4.2, in favor of Tiles 3 |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class SpringWildcardServletTilesApplicationContext extends ServletTilesApplicationContext { |
|
||||||
|
|
||||||
private final ResourcePatternResolver resolver; |
|
||||||
|
|
||||||
|
|
||||||
public SpringWildcardServletTilesApplicationContext(ServletContext servletContext) { |
|
||||||
super(servletContext); |
|
||||||
this.resolver = new ServletContextResourcePatternResolver(servletContext); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public URL getResource(String path) throws IOException { |
|
||||||
Set<URL> urlSet = getResources(path); |
|
||||||
if (!CollectionUtils.isEmpty(urlSet)) { |
|
||||||
return urlSet.iterator().next(); |
|
||||||
} |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public Set<URL> getResources(String path) throws IOException { |
|
||||||
Set<URL> urlSet = null; |
|
||||||
Resource[] resources = this.resolver.getResources(path); |
|
||||||
if (!ObjectUtils.isEmpty(resources)) { |
|
||||||
urlSet = new LinkedHashSet<URL>(resources.length); |
|
||||||
for (Resource resource : resources) { |
|
||||||
urlSet.add(resource.getURL()); |
|
||||||
} |
|
||||||
} |
|
||||||
return urlSet; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,439 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2014 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
|
|
||||||
import java.io.IOException; |
|
||||||
import java.net.URL; |
|
||||||
import java.util.Collections; |
|
||||||
import java.util.HashMap; |
|
||||||
import java.util.LinkedList; |
|
||||||
import java.util.List; |
|
||||||
import java.util.Map; |
|
||||||
import java.util.Set; |
|
||||||
import javax.servlet.ServletContext; |
|
||||||
import javax.servlet.jsp.JspFactory; |
|
||||||
|
|
||||||
import org.apache.commons.logging.Log; |
|
||||||
import org.apache.commons.logging.LogFactory; |
|
||||||
import org.apache.tiles.TilesApplicationContext; |
|
||||||
import org.apache.tiles.TilesException; |
|
||||||
import org.apache.tiles.awareness.TilesApplicationContextAware; |
|
||||||
import org.apache.tiles.context.TilesRequestContextFactory; |
|
||||||
import org.apache.tiles.definition.DefinitionsFactory; |
|
||||||
import org.apache.tiles.definition.DefinitionsFactoryException; |
|
||||||
import org.apache.tiles.definition.DefinitionsReader; |
|
||||||
import org.apache.tiles.definition.Refreshable; |
|
||||||
import org.apache.tiles.definition.dao.BaseLocaleUrlDefinitionDAO; |
|
||||||
import org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO; |
|
||||||
import org.apache.tiles.definition.digester.DigesterDefinitionsReader; |
|
||||||
import org.apache.tiles.el.ELAttributeEvaluator; |
|
||||||
import org.apache.tiles.evaluator.AttributeEvaluator; |
|
||||||
import org.apache.tiles.evaluator.AttributeEvaluatorFactory; |
|
||||||
import org.apache.tiles.evaluator.BasicAttributeEvaluatorFactory; |
|
||||||
import org.apache.tiles.evaluator.impl.DirectAttributeEvaluator; |
|
||||||
import org.apache.tiles.extras.complete.CompleteAutoloadTilesContainerFactory; |
|
||||||
import org.apache.tiles.extras.complete.CompleteAutoloadTilesInitializer; |
|
||||||
import org.apache.tiles.factory.AbstractTilesContainerFactory; |
|
||||||
import org.apache.tiles.factory.BasicTilesContainerFactory; |
|
||||||
import org.apache.tiles.impl.BasicTilesContainer; |
|
||||||
import org.apache.tiles.impl.mgmt.CachingTilesContainer; |
|
||||||
import org.apache.tiles.locale.LocaleResolver; |
|
||||||
import org.apache.tiles.preparer.PreparerFactory; |
|
||||||
import org.apache.tiles.startup.AbstractTilesInitializer; |
|
||||||
import org.apache.tiles.startup.TilesInitializer; |
|
||||||
|
|
||||||
import org.springframework.beans.BeanUtils; |
|
||||||
import org.springframework.beans.BeanWrapper; |
|
||||||
import org.springframework.beans.PropertyAccessorFactory; |
|
||||||
import org.springframework.beans.factory.DisposableBean; |
|
||||||
import org.springframework.beans.factory.InitializingBean; |
|
||||||
import org.springframework.util.ClassUtils; |
|
||||||
import org.springframework.web.context.ServletContextAware; |
|
||||||
|
|
||||||
/** |
|
||||||
* Helper class to configure Tiles 2.x for the Spring Framework. See |
|
||||||
* <a href="http://tiles.apache.org">http://tiles.apache.org</a>
|
|
||||||
* for more information about Tiles, which basically is a templating mechanism |
|
||||||
* for web applications using JSPs and other template engines. |
|
||||||
* |
|
||||||
* <b>Note: Spring 4.0 requires Tiles 2.2.2.</b> Tiles' EL support will |
|
||||||
* be activated by default when the Tiles EL module is present in the classpath. |
|
||||||
* |
|
||||||
* <p>The TilesConfigurer simply configures a TilesContainer using a set of files |
|
||||||
* containing definitions, to be accessed by {@link TilesView} instances. This is a |
|
||||||
* Spring-based alternative (for usage in Spring configuration) to the Tiles-provided |
|
||||||
* {@code ServletContextListener} |
|
||||||
* (e.g. {@link org.apache.tiles.extras.complete.CompleteAutoloadTilesListener} |
|
||||||
* for usage in {@code web.xml}. |
|
||||||
* |
|
||||||
* <p>TilesViews can be managed by any {@link org.springframework.web.servlet.ViewResolver}. |
|
||||||
* For simple convention-based view resolution, consider using {@link TilesViewResolver}. |
|
||||||
* |
|
||||||
* <p>A typical TilesConfigurer bean definition looks as follows: |
|
||||||
* |
|
||||||
* <pre class="code"> |
|
||||||
* <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> |
|
||||||
* <property name="definitions"> |
|
||||||
* <list> |
|
||||||
* <value>/WEB-INF/defs/general.xml</value> |
|
||||||
* <value>/WEB-INF/defs/widgets.xml</value> |
|
||||||
* <value>/WEB-INF/defs/administrator.xml</value> |
|
||||||
* <value>/WEB-INF/defs/customer.xml</value> |
|
||||||
* <value>/WEB-INF/defs/templates.xml</value> |
|
||||||
* </list> |
|
||||||
* </property> |
|
||||||
* </bean> |
|
||||||
* </pre> |
|
||||||
* |
|
||||||
* The values in the list are the actual Tiles XML files containing the definitions. |
|
||||||
* If the list is not specified, the default is {@code "/WEB-INF/tiles.xml"}. |
|
||||||
* |
|
||||||
* @author Juergen Hoeller |
|
||||||
* @since 2.5 |
|
||||||
* @see TilesView |
|
||||||
* @see TilesViewResolver |
|
||||||
* @deprecated as of Spring 4.2, in favor of Tiles 3 |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class TilesConfigurer implements ServletContextAware, InitializingBean, DisposableBean { |
|
||||||
|
|
||||||
private static final boolean tilesElPresent = |
|
||||||
ClassUtils.isPresent("org.apache.tiles.el.ELAttributeEvaluator", TilesConfigurer.class.getClassLoader()); |
|
||||||
|
|
||||||
|
|
||||||
protected final Log logger = LogFactory.getLog(getClass()); |
|
||||||
|
|
||||||
private TilesInitializer tilesInitializer; |
|
||||||
|
|
||||||
private String[] definitions; |
|
||||||
|
|
||||||
private boolean checkRefresh = false; |
|
||||||
|
|
||||||
private boolean validateDefinitions = true; |
|
||||||
|
|
||||||
private Class<? extends DefinitionsFactory> definitionsFactoryClass; |
|
||||||
|
|
||||||
private Class<? extends PreparerFactory> preparerFactoryClass; |
|
||||||
|
|
||||||
private boolean useMutableTilesContainer = false; |
|
||||||
|
|
||||||
private ServletContext servletContext; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Configure Tiles using a custom TilesInitializer, typically specified as an inner bean. |
|
||||||
* <p>Default is a variant of {@link org.apache.tiles.startup.DefaultTilesInitializer}, |
|
||||||
* respecting the "definitions", "preparerFactoryClass" etc properties on this configurer. |
|
||||||
* <p><b>NOTE: Specifying a custom TilesInitializer effectively disables all other bean |
|
||||||
* properties on this configurer.</b> The entire initialization procedure is then left |
|
||||||
* to the TilesInitializer as specified. |
|
||||||
*/ |
|
||||||
public void setTilesInitializer(TilesInitializer tilesInitializer) { |
|
||||||
this.tilesInitializer = tilesInitializer; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Specify whether to apply Tiles 2.2's "complete-autoload" configuration. |
|
||||||
* <p>See {@link org.apache.tiles.extras.complete.CompleteAutoloadTilesContainerFactory} |
|
||||||
* for details on the complete-autoload mode. |
|
||||||
* <p><b>NOTE: Specifying the complete-autoload mode effectively disables all other bean |
|
||||||
* properties on this configurer.</b> The entire initialization procedure is then left |
|
||||||
* to {@link org.apache.tiles.extras.complete.CompleteAutoloadTilesInitializer}. |
|
||||||
* @see org.apache.tiles.extras.complete.CompleteAutoloadTilesContainerFactory |
|
||||||
* @see org.apache.tiles.extras.complete.CompleteAutoloadTilesInitializer |
|
||||||
*/ |
|
||||||
public void setCompleteAutoload(boolean completeAutoload) { |
|
||||||
if (completeAutoload) { |
|
||||||
try { |
|
||||||
this.tilesInitializer = new SpringCompleteAutoloadTilesInitializer(); |
|
||||||
} |
|
||||||
catch (Throwable ex) { |
|
||||||
throw new IllegalStateException("Tiles-Extras 2.2 not available", ex); |
|
||||||
} |
|
||||||
} |
|
||||||
else { |
|
||||||
this.tilesInitializer = null; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set the Tiles definitions, i.e. the list of files containing the definitions. |
|
||||||
* Default is "/WEB-INF/tiles.xml". |
|
||||||
*/ |
|
||||||
public void setDefinitions(String... definitions) { |
|
||||||
this.definitions = definitions; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set whether to check Tiles definition files for a refresh at runtime. |
|
||||||
* Default is "false". |
|
||||||
*/ |
|
||||||
public void setCheckRefresh(boolean checkRefresh) { |
|
||||||
this.checkRefresh = checkRefresh; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set whether to validate the Tiles XML definitions. Default is "true". |
|
||||||
*/ |
|
||||||
public void setValidateDefinitions(boolean validateDefinitions) { |
|
||||||
this.validateDefinitions = validateDefinitions; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set the {@link org.apache.tiles.definition.DefinitionsFactory} implementation to use. |
|
||||||
* Default is {@link org.apache.tiles.definition.UnresolvingLocaleDefinitionsFactory}, |
|
||||||
* operating on definition resource URLs. |
|
||||||
* <p>Specify a custom DefinitionsFactory, e.g. a UrlDefinitionsFactory subclass, |
|
||||||
* to customize the creation of Tiles Definition objects. Note that such a |
|
||||||
* DefinitionsFactory has to be able to handle {@link java.net.URL} source objects, |
|
||||||
* unless you configure a different TilesContainerFactory. |
|
||||||
*/ |
|
||||||
public void setDefinitionsFactoryClass(Class<? extends DefinitionsFactory> definitionsFactoryClass) { |
|
||||||
this.definitionsFactoryClass = definitionsFactoryClass; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set the {@link org.apache.tiles.preparer.PreparerFactory} implementation to use. |
|
||||||
* Default is {@link org.apache.tiles.preparer.BasicPreparerFactory}, creating |
|
||||||
* shared instances for specified preparer classes. |
|
||||||
* <p>Specify {@link SimpleSpringPreparerFactory} to autowire |
|
||||||
* {@link org.apache.tiles.preparer.ViewPreparer} instances based on specified |
|
||||||
* preparer classes, applying Spring's container callbacks as well as applying |
|
||||||
* configured Spring BeanPostProcessors. If Spring's context-wide annotation-config |
|
||||||
* has been activated, annotations in ViewPreparer classes will be automatically |
|
||||||
* detected and applied. |
|
||||||
* <p>Specify {@link SpringBeanPreparerFactory} to operate on specified preparer |
|
||||||
* <i>names</i> instead of classes, obtaining the corresponding Spring bean from |
|
||||||
* the DispatcherServlet's application context. The full bean creation process |
|
||||||
* will be in the control of the Spring application context in this case, |
|
||||||
* allowing for the use of scoped beans etc. Note that you need to define one |
|
||||||
* Spring bean definition per preparer name (as used in your Tiles definitions). |
|
||||||
* @see SimpleSpringPreparerFactory |
|
||||||
* @see SpringBeanPreparerFactory |
|
||||||
*/ |
|
||||||
public void setPreparerFactoryClass(Class<? extends PreparerFactory> preparerFactoryClass) { |
|
||||||
this.preparerFactoryClass = preparerFactoryClass; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set whether to use a MutableTilesContainer (typically the CachingTilesContainer |
|
||||||
* implementation) for this application. Default is "false". |
|
||||||
* @see org.apache.tiles.mgmt.MutableTilesContainer |
|
||||||
* @see org.apache.tiles.impl.mgmt.CachingTilesContainer |
|
||||||
*/ |
|
||||||
public void setUseMutableTilesContainer(boolean useMutableTilesContainer) { |
|
||||||
this.useMutableTilesContainer = useMutableTilesContainer; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void setServletContext(ServletContext servletContext) { |
|
||||||
this.servletContext = servletContext; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Creates and exposes a TilesContainer for this web application, |
|
||||||
* delegating to the TilesInitializer. |
|
||||||
* @throws TilesException in case of setup failure |
|
||||||
*/ |
|
||||||
@Override |
|
||||||
public void afterPropertiesSet() throws TilesException { |
|
||||||
TilesApplicationContext preliminaryContext = |
|
||||||
new SpringWildcardServletTilesApplicationContext(this.servletContext); |
|
||||||
if (this.tilesInitializer == null) { |
|
||||||
this.tilesInitializer = createTilesInitializer(); |
|
||||||
} |
|
||||||
this.tilesInitializer.initialize(preliminaryContext); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Creates a new instance of {@code SpringTilesInitializer}. |
|
||||||
* <p>Override it to use a different initializer. |
|
||||||
* @see org.apache.tiles.web.startup.AbstractTilesListener#createTilesInitializer() |
|
||||||
*/ |
|
||||||
protected TilesInitializer createTilesInitializer() { |
|
||||||
return new SpringTilesInitializer(); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Removes the TilesContainer from this web application. |
|
||||||
* @throws TilesException in case of cleanup failure |
|
||||||
*/ |
|
||||||
@Override |
|
||||||
public void destroy() throws TilesException { |
|
||||||
this.tilesInitializer.destroy(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
private class SpringTilesInitializer extends AbstractTilesInitializer { |
|
||||||
|
|
||||||
@Override |
|
||||||
protected AbstractTilesContainerFactory createContainerFactory(TilesApplicationContext context) { |
|
||||||
return new SpringTilesContainerFactory(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
private class SpringTilesContainerFactory extends BasicTilesContainerFactory { |
|
||||||
|
|
||||||
@Override |
|
||||||
protected BasicTilesContainer instantiateContainer(TilesApplicationContext context) { |
|
||||||
return (useMutableTilesContainer ? new CachingTilesContainer() : new BasicTilesContainer()); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void registerRequestContextFactory(String className, |
|
||||||
List<TilesRequestContextFactory> factories, TilesRequestContextFactory parent) { |
|
||||||
// Avoid Tiles 2.2 warn logging when default RequestContextFactory impl class not found
|
|
||||||
if (ClassUtils.isPresent(className, TilesConfigurer.class.getClassLoader())) { |
|
||||||
super.registerRequestContextFactory(className, factories, parent); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected List<URL> getSourceURLs(TilesApplicationContext applicationContext, |
|
||||||
TilesRequestContextFactory contextFactory) { |
|
||||||
if (definitions != null) { |
|
||||||
try { |
|
||||||
List<URL> result = new LinkedList<URL>(); |
|
||||||
for (String definition : definitions) { |
|
||||||
Set<URL> resources = applicationContext.getResources(definition); |
|
||||||
if (resources != null) { |
|
||||||
result.addAll(resources); |
|
||||||
} |
|
||||||
} |
|
||||||
return result; |
|
||||||
} |
|
||||||
catch (IOException ex) { |
|
||||||
throw new DefinitionsFactoryException("Cannot load definition URLs", ex); |
|
||||||
} |
|
||||||
} |
|
||||||
else { |
|
||||||
return super.getSourceURLs(applicationContext, contextFactory); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(TilesApplicationContext applicationContext, |
|
||||||
TilesRequestContextFactory contextFactory, LocaleResolver resolver) { |
|
||||||
BaseLocaleUrlDefinitionDAO dao = super.instantiateLocaleDefinitionDao( |
|
||||||
applicationContext, contextFactory, resolver); |
|
||||||
if (checkRefresh && dao instanceof CachingLocaleUrlDefinitionDAO) { |
|
||||||
((CachingLocaleUrlDefinitionDAO) dao).setCheckRefresh(true); |
|
||||||
} |
|
||||||
return dao; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected DefinitionsReader createDefinitionsReader(TilesApplicationContext applicationContext, |
|
||||||
TilesRequestContextFactory contextFactory) { |
|
||||||
DigesterDefinitionsReader reader = new DigesterDefinitionsReader(); |
|
||||||
if (!validateDefinitions){ |
|
||||||
Map<String,String> map = new HashMap<String,String>(); |
|
||||||
map.put(DigesterDefinitionsReader.PARSER_VALIDATE_PARAMETER_NAME, Boolean.FALSE.toString()); |
|
||||||
reader.init(map); |
|
||||||
} |
|
||||||
return reader; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected DefinitionsFactory createDefinitionsFactory(TilesApplicationContext applicationContext, |
|
||||||
TilesRequestContextFactory contextFactory, LocaleResolver resolver) { |
|
||||||
if (definitionsFactoryClass != null) { |
|
||||||
DefinitionsFactory factory = BeanUtils.instantiate(definitionsFactoryClass); |
|
||||||
if (factory instanceof TilesApplicationContextAware) { |
|
||||||
((TilesApplicationContextAware) factory).setApplicationContext(applicationContext); |
|
||||||
} |
|
||||||
BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(factory); |
|
||||||
if (bw.isWritableProperty("localeResolver")) { |
|
||||||
bw.setPropertyValue("localeResolver", resolver); |
|
||||||
} |
|
||||||
if (bw.isWritableProperty("definitionDAO")) { |
|
||||||
bw.setPropertyValue("definitionDAO", |
|
||||||
createLocaleDefinitionDao(applicationContext, contextFactory, resolver)); |
|
||||||
} |
|
||||||
if (factory instanceof Refreshable) { |
|
||||||
((Refreshable) factory).refresh(); |
|
||||||
} |
|
||||||
return factory; |
|
||||||
} |
|
||||||
else { |
|
||||||
return super.createDefinitionsFactory(applicationContext, contextFactory, resolver); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected PreparerFactory createPreparerFactory(TilesApplicationContext applicationContext, |
|
||||||
TilesRequestContextFactory contextFactory) { |
|
||||||
if (preparerFactoryClass != null) { |
|
||||||
return BeanUtils.instantiate(preparerFactoryClass); |
|
||||||
} |
|
||||||
else { |
|
||||||
return super.createPreparerFactory(applicationContext, contextFactory); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected LocaleResolver createLocaleResolver(TilesApplicationContext applicationContext, |
|
||||||
TilesRequestContextFactory contextFactory) { |
|
||||||
return new SpringLocaleResolver(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected AttributeEvaluatorFactory createAttributeEvaluatorFactory(TilesApplicationContext applicationContext, |
|
||||||
TilesRequestContextFactory contextFactory, LocaleResolver resolver) { |
|
||||||
AttributeEvaluator evaluator; |
|
||||||
if (tilesElPresent && JspFactory.getDefaultFactory() != null) { |
|
||||||
evaluator = TilesElActivator.createEvaluator(applicationContext); |
|
||||||
} |
|
||||||
else { |
|
||||||
evaluator = new DirectAttributeEvaluator(); |
|
||||||
} |
|
||||||
return new BasicAttributeEvaluatorFactory(evaluator); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
private static class SpringCompleteAutoloadTilesInitializer extends CompleteAutoloadTilesInitializer { |
|
||||||
|
|
||||||
@Override |
|
||||||
protected AbstractTilesContainerFactory createContainerFactory(TilesApplicationContext context) { |
|
||||||
return new SpringCompleteAutoloadTilesContainerFactory(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
private static class SpringCompleteAutoloadTilesContainerFactory extends CompleteAutoloadTilesContainerFactory { |
|
||||||
|
|
||||||
@Override |
|
||||||
protected LocaleResolver createLocaleResolver(TilesApplicationContext applicationContext, |
|
||||||
TilesRequestContextFactory contextFactory) { |
|
||||||
return new SpringLocaleResolver(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
private static class TilesElActivator { |
|
||||||
|
|
||||||
public static AttributeEvaluator createEvaluator(TilesApplicationContext applicationContext) { |
|
||||||
ELAttributeEvaluator evaluator = new ELAttributeEvaluator(); |
|
||||||
evaluator.setApplicationContext(applicationContext); |
|
||||||
evaluator.init(Collections.<String, String>emptyMap()); |
|
||||||
return evaluator; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,112 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2014 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
|
|
||||||
import java.util.Locale; |
|
||||||
import java.util.Map; |
|
||||||
import javax.servlet.ServletContext; |
|
||||||
import javax.servlet.ServletException; |
|
||||||
import javax.servlet.http.HttpServletRequest; |
|
||||||
import javax.servlet.http.HttpServletResponse; |
|
||||||
|
|
||||||
import org.apache.tiles.TilesApplicationContext; |
|
||||||
import org.apache.tiles.TilesContainer; |
|
||||||
import org.apache.tiles.context.TilesRequestContext; |
|
||||||
import org.apache.tiles.impl.BasicTilesContainer; |
|
||||||
import org.apache.tiles.servlet.context.ServletTilesApplicationContext; |
|
||||||
import org.apache.tiles.servlet.context.ServletTilesRequestContext; |
|
||||||
import org.apache.tiles.servlet.context.ServletUtil; |
|
||||||
|
|
||||||
import org.springframework.web.servlet.support.JstlUtils; |
|
||||||
import org.springframework.web.servlet.support.RequestContext; |
|
||||||
import org.springframework.web.servlet.view.AbstractUrlBasedView; |
|
||||||
|
|
||||||
/** |
|
||||||
* {@link org.springframework.web.servlet.View} implementation that retrieves a |
|
||||||
* Tiles definition. The "url" property is interpreted as name of a Tiles definition. |
|
||||||
* |
|
||||||
* <p>This class builds on Tiles2, which requires JSP 2.0. |
|
||||||
* JSTL support is integrated out of the box due to JSTL's inclusion in JSP 2.0. |
|
||||||
* <b>Note: Spring 4.0 requires Tiles 2.2.2.</b> |
|
||||||
* |
|
||||||
* <p>Depends on a TilesContainer which must be available in |
|
||||||
* the ServletContext. This container is typically set up via a |
|
||||||
* {@link TilesConfigurer} bean definition in the application context. |
|
||||||
* |
|
||||||
* @author Juergen Hoeller |
|
||||||
* @author Sebastien Deleuze |
|
||||||
* @since 2.5 |
|
||||||
* @see #setUrl |
|
||||||
* @see TilesConfigurer |
|
||||||
* @deprecated as of Spring 4.2, in favor of Tiles 3 |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class TilesView extends AbstractUrlBasedView { |
|
||||||
|
|
||||||
private boolean alwaysInclude = false; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Specify whether to always include the view rather than forward to it. |
|
||||||
* <p>Default is "false". Switch this flag on to enforce the use of a |
|
||||||
* Servlet include, even if a forward would be possible. |
|
||||||
* @since 4.1.2 |
|
||||||
* @see TilesViewResolver#setAlwaysInclude |
|
||||||
*/ |
|
||||||
public void setAlwaysInclude(boolean alwaysInclude) { |
|
||||||
this.alwaysInclude = alwaysInclude; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public boolean checkResource(final Locale locale) throws Exception { |
|
||||||
TilesContainer container = ServletUtil.getContainer(getServletContext()); |
|
||||||
if (!(container instanceof BasicTilesContainer)) { |
|
||||||
// Cannot check properly - let's assume it's there.
|
|
||||||
return true; |
|
||||||
} |
|
||||||
BasicTilesContainer basicContainer = (BasicTilesContainer) container; |
|
||||||
TilesApplicationContext appContext = new ServletTilesApplicationContext(getServletContext()); |
|
||||||
TilesRequestContext requestContext = new ServletTilesRequestContext(appContext, null, null) { |
|
||||||
@Override |
|
||||||
public Locale getRequestLocale() { |
|
||||||
return locale; |
|
||||||
} |
|
||||||
}; |
|
||||||
return (basicContainer.getDefinitionsFactory().getDefinition(getUrl(), requestContext) != null); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void renderMergedOutputModel( |
|
||||||
Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { |
|
||||||
|
|
||||||
ServletContext servletContext = getServletContext(); |
|
||||||
TilesContainer container = ServletUtil.getContainer(servletContext); |
|
||||||
if (container == null) { |
|
||||||
throw new ServletException("Tiles container is not initialized. " + |
|
||||||
"Have you added a TilesConfigurer to your web application context?"); |
|
||||||
} |
|
||||||
|
|
||||||
exposeModelAsRequestAttributes(model, request); |
|
||||||
JstlUtils.exposeLocalizationContext(new RequestContext(request, servletContext)); |
|
||||||
if (this.alwaysInclude) { |
|
||||||
ServletUtil.setForceInclude(request, true); |
|
||||||
} |
|
||||||
container.render(getUrl(), request, response); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,83 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2014 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
|
|
||||||
import org.springframework.web.servlet.view.AbstractUrlBasedView; |
|
||||||
import org.springframework.web.servlet.view.UrlBasedViewResolver; |
|
||||||
|
|
||||||
/** |
|
||||||
* Convenience subclass of {@link org.springframework.web.servlet.view.UrlBasedViewResolver} |
|
||||||
* that supports {@link TilesView} (i.e. Tiles definitions) and custom subclasses of it. |
|
||||||
* |
|
||||||
* <p>The view class for all views generated by this resolver can be specified |
|
||||||
* via the "viewClass" property. See UrlBasedViewResolver's javadoc for details. |
|
||||||
* |
|
||||||
* <p><b>Note:</b> When chaining ViewResolvers, a TilesViewResolver will |
|
||||||
* check for the existence of the specified template resources and only return |
|
||||||
* a non-null View object if the template was actually found. |
|
||||||
* |
|
||||||
* @author Juergen Hoeller |
|
||||||
* @author Sebastien Deleuze |
|
||||||
* @since 3.0 |
|
||||||
* @see #setViewClass |
|
||||||
* @see #setPrefix |
|
||||||
* @see #setSuffix |
|
||||||
* @see #setRequestContextAttribute |
|
||||||
* @see TilesView |
|
||||||
* @deprecated as of Spring 4.2, in favor of Tiles 3 |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class TilesViewResolver extends UrlBasedViewResolver { |
|
||||||
|
|
||||||
private Boolean alwaysInclude; |
|
||||||
|
|
||||||
|
|
||||||
public TilesViewResolver() { |
|
||||||
setViewClass(requiredViewClass()); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* This resolver requires {@link TilesView}. |
|
||||||
*/ |
|
||||||
@Override |
|
||||||
protected Class<?> requiredViewClass() { |
|
||||||
return TilesView.class; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Specify whether to always include the view rather than forward to it. |
|
||||||
* <p>Default is "false". Switch this flag on to enforce the use of a |
|
||||||
* Servlet include, even if a forward would be possible. |
|
||||||
* @since 4.1.2 |
|
||||||
* @see TilesView#setAlwaysInclude |
|
||||||
*/ |
|
||||||
public void setAlwaysInclude(Boolean alwaysInclude) { |
|
||||||
this.alwaysInclude = alwaysInclude; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
protected AbstractUrlBasedView buildView(String viewName) throws Exception { |
|
||||||
TilesView view = (TilesView) super.buildView(viewName); |
|
||||||
if (this.alwaysInclude != null) { |
|
||||||
view.setAlwaysInclude(this.alwaysInclude); |
|
||||||
} |
|
||||||
return view; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,7 +0,0 @@ |
|||||||
/** |
|
||||||
* Support classes for the integration of |
|
||||||
* <a href="http://tiles.apache.org">Tiles2</a> |
|
||||||
* (the standalone version of Tiles) as Spring web view technology. |
|
||||||
* Contains a View implementation for Tiles definitions. |
|
||||||
*/ |
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
@ -1,54 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2014 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.tiles2; |
|
||||||
|
|
||||||
import org.apache.tiles.context.TilesRequestContext; |
|
||||||
import org.apache.tiles.impl.BasicTilesContainer; |
|
||||||
import org.apache.tiles.servlet.context.ServletTilesRequestContext; |
|
||||||
import org.apache.tiles.servlet.context.ServletUtil; |
|
||||||
import org.junit.Test; |
|
||||||
|
|
||||||
import org.springframework.mock.web.test.MockHttpServletRequest; |
|
||||||
import org.springframework.mock.web.test.MockHttpServletResponse; |
|
||||||
import org.springframework.mock.web.test.MockServletContext; |
|
||||||
|
|
||||||
import static org.junit.Assert.*; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author Juergen Hoeller |
|
||||||
*/ |
|
||||||
public class TilesConfigurerTests { |
|
||||||
|
|
||||||
@Test |
|
||||||
@SuppressWarnings("deprecation") |
|
||||||
public void simpleBootstrap() { |
|
||||||
MockServletContext sc = new MockServletContext(); |
|
||||||
TilesConfigurer tc = new TilesConfigurer(); |
|
||||||
tc.setDefinitions("/org/springframework/web/servlet/view/tiles2/tiles-definitions.xml"); |
|
||||||
tc.setCheckRefresh(true); |
|
||||||
tc.setServletContext(sc); |
|
||||||
tc.afterPropertiesSet(); |
|
||||||
|
|
||||||
BasicTilesContainer container = (BasicTilesContainer) ServletUtil.getContainer(sc); |
|
||||||
TilesRequestContext requestContext = new ServletTilesRequestContext( |
|
||||||
container.getApplicationContext(), new MockHttpServletRequest(), new MockHttpServletResponse()); |
|
||||||
assertNotNull(container.getDefinitionsFactory().getDefinition("test", requestContext)); |
|
||||||
|
|
||||||
tc.destroy(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1 +0,0 @@ |
|||||||
net.sf.jasperreports.awt.ignore.missing.font=true |
|
||||||
@ -1,10 +0,0 @@ |
|||||||
log4j.appender.console=org.apache.log4j.ConsoleAppender |
|
||||||
log4j.appender.console.layout=org.apache.log4j.PatternLayout |
|
||||||
log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%c] - %m%n |
|
||||||
|
|
||||||
log4j.rootCategory=WARN, console |
|
||||||
log4j.logger.org.springframework.beans=WARN |
|
||||||
log4j.logger.org.springframework.convert=DEBUG |
|
||||||
|
|
||||||
#log4j.logger.org.springframework.web.servlet=TRACE |
|
||||||
|
|
||||||
@ -1,10 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8" ?> |
|
||||||
<!DOCTYPE tiles-definitions PUBLIC |
|
||||||
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" |
|
||||||
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd"> |
|
||||||
|
|
||||||
<tiles-definitions> |
|
||||||
|
|
||||||
<definition name="test" template="/WEB-INF/tiles/test.jsp"/> |
|
||||||
|
|
||||||
</tiles-definitions> |
|
||||||
Loading…
Reference in new issue