简体   繁体   中英

Tiles wildcards and Spring mvc

I'm using spring 3 mvc Tiles with wildcars and I do gets the values ​​of the parameters. I have defined my view:

<definition name="recurso/*/*" extends="genericTemplate">
    <put-attribute name="titulo" value="Recurso" />
    <put-attribute name="body">
        <definition extends="dosColumnasTemplate" >
            <put-attribute name="izquierda" value="/WEB-INF/views/recursos/detalle/{1}.jsp" />
            <put-attribute name="derecha" value="/WEB-INF/views/recursos/detalle/{2}.jsp" />
        </definition>
    </put-attribute>
</definition>

The method calls the handler:

@RequestMapping(value="/recurso/{id}", method = RequestMethod.GET)
public String printRecurso(@PathVariable(value = "id") Long id, ModelMap model)
{
  model.addAttribute("active", "recursos");
  return "recurso/campos/grupos";
}

And I'm using the TilesView:

<!-- Tiles View Url Based Resolver -->
<bean id="tilesViewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
       <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
</bean>

The result is the following error: El Servlet.service () for servlet jsp threw exception javax.servlet.ServletException: JSP File "/ WEB-INF/views/recursos/detalle / jsp {1}." not found

javax.servlet.ServletException: JSP File "/ WEB-INF/views/recursos/detalle / jsp {2}." not found

Seems some jars issues as mentioned in this link

  • tiles-api 3.0.1 jar
  • tiles-core 3.0.1 jar
  • tiles-jsp 3.0.1 jar
  • tiles-request-api 1.0.1 jar
  • commons-digester 2.0 jar
  • commons-beanutils 1.8.0 jar

My pom.xml

<modelVersion>4.0.0</modelVersion>
<groupId>es.omb</groupId>
<artifactId>recursos</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>recursos Maven Webapp</name>
<url>http://maven.apache.org</url>

<properties>
    <spring.version>3.2.10.RELEASE</spring.version>
    <tiles.version>3.0.4</tiles.version>
</properties>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-extras</artifactId>
        <version>${tiles.version}</version>
    </dependency>   

    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

</dependencies>
<build>
    <finalName>recursos</finalName>
</build>

My dispatcher:

<context:component-scan base-package="es.omb.recursos.controllers" />

<!-- Spring Internal View Resolver -->
<!-- 
<bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/views/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>
-->

<!-- Tiles Configuration --> 
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles/templates.xml</value>
            <value>/WEB-INF/tiles/recursos.xml</value>
            <value>/WEB-INF/tiles/duplicados.xml</value>
            <value>/WEB-INF/tiles/tipoloxias.xml</value>
            <value>/WEB-INF/tiles/campos.xml</value>
        </list>
    </property>
</bean>

<!-- Tiles View Url Based Resolver -->
<bean id="tilesViewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
       <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
</bean>


<!-- Recursos estáticos css y js -->
<mvc:annotation-driven />
<mvc:resources mapping="/assets/**" location="/assets/" />

My tiles config templates.xml:

<!-- Plantilla genérica con el menú, body y footer -->
<definition name="genericTemplate" template="/WEB-INF/views/templates/template.jsp">
    <put-attribute name="menu" value="/WEB-INF/views/templates/menus/superior.jsp" />
    <put-attribute name="footer" value="/WEB-INF/views/templates/footer.jsp" />
</definition>

<!-- Plantilla genérica del body de una columna -->
<definition name="unaColumnaTemplate" template="/WEB-INF/views/templates/body/una-columna.jsp">
</definition>

<!-- Plantilla genérica del body de dos columnas -->
<definition name="dosColumnasTemplate" template="/WEB-INF/views/templates/body/dos-columnas.jsp">
</definition>

<!-- Plantilla genérica del body de tres columnas -->
<definition name="tresColumnasTemplate" template="/WEB-INF/views/templates/body/tres-columnas.jsp">
</definition>   

<definition name="recurso/*/*" extends="genericTemplate">
    <put-attribute name="titulo" value="Recurso" />
    <put-attribute name="body">
        <definition extends="dosColumnasTemplate" >
            <put-attribute name="izquierda" value="/WEB-INF/views/recursos/detalle/{1}.jsp" />
            <put-attribute name="derecha" value="/WEB-INF/views/recursos/detalle/{2}.jsp" />
        </definition>
    </put-attribute>
</definition>           

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM