Как показать tile2.tilesview весной mvc3 - PullRequest
2 голосов
/ 05 июля 2010

Я пытался визуализировать вид плиток с помощью UrlBasedViewResolver в течение нескольких часов. Кто-нибудь может показать мне, как это делается. Я вообще пытаюсь решить это

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"></property>
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
    <property name="order" value="1"/>              
</bean> 


<bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="views"/>
    <property name="order" value="0"/>
</bean>

и в моем файле views.properties у меня будут другие пути просмотра, которые будут отображаться с помощью jstlView. вот исключение, которое оно дает

javax.servlet.ServletException: Could not resolve view with name 'welcome' in servlet with name 'epub'
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1042)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

это просто не сработает. Это говорит, что это не может сделать представление. Я знаю, что это не из-за цепочки 2-х определителей и не из-за тайлов. Потому что, когда я определяю класс представления плитки в файле view.properties, он будет работать. Поэтому я предполагаю, что urlbasedviewresolver и tileview не могут работать вместе в некотором роде. У меня будет много макетов листов, поэтому не очень красиво определить их все в моем файле свойств (у меня будет несколько обычных страниц jsp, поэтому можно использовать resourceBundleViewResolver) Любые идеи?

1 Ответ

2 голосов
/ 06 июля 2010

Вот что вам нужно для установки тайлов (я полагаю, вы используете тайлы 2)

1º шаг

Определить TilesConfigurer

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <!--Set up your Tiles definition RIGHT HERE-->    
            <value>/WEB-INF/defs/general.xml</value>
        </list>
    </property>
</bean>

2º шаг

Настройте распознаватель вида (Вы можете использовать либо UrlBasedViewResolver, либо ResourceBundleViewResolver). Но имейте в виду, используете ли вы UrlBasedViewResolver, Spring не позволяет использовать других подклассов UrlBasedViewResolver, таких как InternalResourceView, VelocityView и FreeMarkerView.

Или

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <!--Tiles IS NOT JSP-->
    <!--So you can not use JSP stuffs like .jsp suffix-->
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
</bean>

Или

<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <!--views.properties is located in The root of the classpath-->
    <property name="basename" value="views"/>
</bean>

Здесь приведен фрагмент кода view.properties

#You MUST SET UP each Target view class
welcome.(class)=org.springframework.web.servlet.view.tiles2.TilesView
#url MUST MATCH Tiles definition 
welcome.url=welcome
...