【问题标题】:How to show tiles2.tilesview in spring mvc3如何在spring mvc3中显示tiles2.tilesview
【发布时间】:2011-03-11 23:37:21
【问题描述】:

几个小时以来,我一直在尝试使用 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 个视图解析器,也不是因为瓷砖 conf。因为当我在 view.properties 文件中定义 tile 的视图类时,它会起作用。所以我假设 urlbasedviewresolver 和 tilesview 在某些方面不能一起工作。我会有很多平铺布局,所以在我的属性文件中定义所有这些布局并不是很漂亮。(我会有很少的常规 jsp 页面,所以可以使用 resourceBundleViewResolver)有什么想法吗?

【问题讨论】:

    标签: spring spring-mvc integration tiles


    【解决方案1】:

    以下是设置 Tiles 所需的内容(我想您正在使用 Tiles 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
    

    【讨论】:

    • Tnx,所以我不能使用后缀和前缀。我删除了后缀前缀部分,它就像一个魅力。我不知道为什么我没有尝试那个 b4。我将 ResourceBundleViewResolver 用于我的 jsp 页面(我将有很少的 jsp 页面)和 UrlBasedViewResolver 用于我的图块。你拯救了我的一天。非常感谢亚瑟!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多