Как заставить Spring 3.2 работать с Tiles 3 и REGEXP

Я настраиваю проект, используя Spring MVC и плитки 3. Он отлично работает с обычными определениями плиток, но я не могу заставить работать определения REGEXP:. Есть ли что-то особенное, что нужно сделать?

РЕДАКТИРОВАТЬ

Выяснил, что мне нужно установить для свойства completeAutoload в преобразователе представления значение true. Однако я получаю исключение приведения класса

java.lang.ClassCastException: org.apache.tiles.impl.mgmt.CachingTilesContainer cannot be cast to org.apache.tiles.impl.BasicTilesContainer
    at org.springframework.web.servlet.view.tiles3.TilesConfigurer.afterPropertiesSet(TilesConfigurer.java:263)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)

Весенняя конфигурация

<?xml version="1.0" encoding="UTF-8"?>
<!-- - DispatcherServlet application context for KinzHunt's web tier. -->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
                http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

    <!-- Enable Spring MVC annotation configuration -->
    <mvc:annotation-driven />
    <!-- Scan the application for all possible controllers & autowire collaborators -->
    <context:component-scan base-package="com.example" use-default-filters="true" />

    <bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/>
    <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <property name="definitions">
            <list>
                <value>/WEB-INF/tiles.xml</value>
            </list>
        </property>
        <property name="completeAutoload" value="true"/>
        <property name="preparerFactoryClass" value="org.apache.tiles.compat.preparer.CompatibilityPreparerFactory"/>
        <property name="useMutableTilesContainer" value="false"/>
    </bean>

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
</beans>

person Alaa Nassef    schedule 16.01.2013    source источник
comment
Можете ли вы опубликовать свою весеннюю конфигурацию?   -  person Abhinav Sarkar    schedule 16.01.2013
comment
@AbhinavSarkar, очень прошу прощения за задержку с ответом (был в отпуске без доступа в Интернет). Добавлен файл конфигурации Spring   -  person Alaa Nassef    schedule 20.01.2013


Ответы (2)


Ваша проблема не связана с регулярными выражениями или конфигурацией Spring, которую вы опубликовали. Я подозреваю, что вы также используете некоторые @nnotations. Во всяком случае, Spring утверждает, что вы пытаетесь использовать объект типа CachingTilesContainer в месте, где ему требуется BasicTilesContainer, подключенный через автопроводку. Это не вызывается в XML, поэтому оно должно быть в Java, так что вам придется его найти. Повышение уровня ведения журнала до DEBUG даст вам больше информации. Не будучи специалистом по плитке, могу только написать, что это выглядит странно. Посмотрите в своем Java-коде аннотации, которые настраивают ваш контейнер, и посмотрите, где это происходит.

person bmargulies    schedule 20.01.2013

Оказывается, это ошибка в собственной реализации Spring. Я сообщил об ошибке в их системе отслеживания проблем и отправил им запрос на вытягивание

person Alaa Nassef    schedule 20.01.2013