Tiles 2,JSP的映射

时间:2011-02-04 07:40:07

标签: apache spring tiles2

我在Spring 3.05中使用Tiles 2。我想将jsp文件映射到控制器,例如

 <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.jsp</url-pattern>
 </servlet-mapping>

当我这样做时,我得到“[WARN] org.springframework.web.servlet.PageNotFound [找不到带有URI的HTTP请求的映射[/WEB-INF/*.jsp]”适用于所有瓷砖。

如何从servlet-mapping中排除tile(来自WEB-INF内)?或者我可以将这些文件显式映射到tile servlet?

2 个答案:

答案 0 :(得分:0)

您应该在web.xml文件中配置它,而不是在context中执行此操作。春季docs中提供了相关说明。

答案 1 :(得分:0)

我的spring-context.xml的这个sippet可以帮助你构建你的配置。 它基于以下事实:有两种磁贴配置文件:

  • /WEB-INF/layouts/tiles-layouts.xml包含tile layout definitin
  • / WEB-INF / jsp / controllers / ** / views.xml是几个绑定视图和jsp的文件

    <bean id="viewResolver"
            class="org.springframework.web.servlet.view.UrlBasedViewResolver">
            <property name="requestContextAttribute" value="requestContext" />
            <property name="viewClass"
                    value="org.springframework.web.servlet.view.tiles2.TilesView" />
    </bean>
    
    <!-- Configure Apache Tiles for the view -->
    <bean id="tilesConfigurer"
            class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
            <property name="definitions">
                    <list>
                            <value>/WEB-INF/layouts/tiles-layouts.xml</value>
                            <value>/WEB-INF/jsp/controllers/**/views.xml</value>                           
                    </list>
            </property>
    </bean>
    

其中一个/WEB-INF/jsp/controllers/**/views.xml文件:

 <tiles-definitions>

    <!-- Pages -->
    <definition name="site/list" extends="standard-layout">
            <put-attribute name="title" value="List Sites" />
            <put-attribute name="body" value="/WEB-INF/jsp/controllers/site/list.jsp" />
    </definition>
    <definition name="site/show" extends="standard-breadcrumb-layout">
            <put-attribute name="title" value="Show Site" />
            <put-attribute name="breadcrumbNavigation" value="/WEB-INF/layouts/siteBreadcrumbNavigation.jsp" />
            <put-attribute name="body" value="/WEB-INF/jsp/controllers/site/show.jsp" />
    </definition>
    <definition name="site/create" extends="standard-layout">
            <put-attribute name="title" value="Create Site" />
            <put-attribute name="body" value="/WEB-INF/jsp/controllers/site/create.jsp" />
    </definition>
    <definition name="site/update" extends="standard-layout">
            <put-attribute name="title" value="Update Site" />
            <put-attribute name="body" value="/WEB-INF/jsp/controllers/site/update.jsp" />
    </definition>

 </tiles-definitions>