2010-04-20 11 views
5

Estoy teniendo un montón de tiempo resolviendo URLs con Spring 3.0 MVC. Solo estoy construyendo un HelloWorld para probar cómo construir una aplicación web RESTful en Spring, nada teóricamente complicado.¿Cómo creo una aplicación web Spring 3 + Tiles 2 usando REST-ful URLs?

Todos los ejemplos que he podido encontrar se basan en configuraciones que prestan atención a las extensiones de archivo ("* .htm" o "* .do"), incluyen un prefijo de nombre de directorio artificial ("/ foo") o incluso prefijos de caminos con un punto (feo), todos los enfoques que utilizan algún patrón de expresiones regulares artificiales como una señal para el resolver. Para un enfoque REST, quiero evitar toda esa suciedad y usar solo los patrones de URL naturales de mi aplicación. Asumiría (quizás incorrectamente) que en web.xml establecería un patrón de url de "/ *" y pasaría todo al DispatcherServlet para su resolución, y luego solo confiaría en los patrones de URL en mi controlador.

No puedo conseguir que mi (s) resolver resuelva los patrones de URL, y en todas mis pruebas esto da como resultado un error de recurso no encontrado, un desbordamiento de pila (bucle) o algún tipo de excepción de ServletException stack trace — Una de mis frustraciones actuales con Spring en general es que los mensajes de error a menudo no son muy útiles.

Quiero trabajar con un resolver Tiles 2. Localicé mis archivos * .jsp en WEB-INF/views/y tengo un archivo index.jsp de línea única en la raíz de la aplicación que redirige al archivo de índice establecido por mi layout.xml (el configurador Tiles 2).

que hacer todo lo normal configuración de alto nivel de primavera 3:

<mvc:annotation-driven /> 

<mvc:view-controller path="/" view-name="index"/> 

<context:component-scan base-package="com.acme.web.controller" /> 

... seguido por todo tipo de combinaciones y configuraciones de UrlBasedViewResolver, InternalResourceViewResolver, UrlFilenameViewController, etc, con toda clase de variantions en mi Tiles 2 archivo de configuración. Luego, en mi controlador, intento retomar mis patrones de URL. El problema es que no puedo ni siquiera confiablemente obtener el (los) resolutor (es) para capturar los patrones para enviar a mi controlador.

Esto ahora se ha extendido a varios días sin progreso real en algo que pensé que sería muy simple de implementar. Tal vez estoy tratando de hacer demasiado a la vez, aunque creo que esto debería ser una configuración simple (casi predeterminada). Solo estoy tratando de crear una aplicación simple tipo HelloWorld, no esperaría que esto sea ciencia de cohetes.

En lugar de publicar mis propias configuraciones (que se han extendido por todo el mapa), ¿alguien sabe de un ejemplo en línea que: muestra una simple aplicación web Spring 3 MVC + Tiles 2 que utiliza URL REST-ful (es decir, evitando patrones de URL forzados como extensiones de archivos, nombres de directorios o puntos añadidos) y se basa únicamente en el código/anotaciones de Spring 3 (es decir, nada fuera de Spring MVC) para lograr esto? ¿Hay una manera fácil de hacer esto?

Muchas gracias por cualquier ayuda.

+0

yo también estoy tratando de utilizar Spring 3 MVC Web con Apache Tiles usando URLs reparador durante la primavera. Puedo hacer que se renderice una página, pero recibo una recursión infinita de Tomcat, que sospecho que proviene de la asignación del servlet raíz '/'. –

Respuesta

0

La aplicación de ejemplo de primavera: petcare tiene los vínculos definidos de una manera reparador. Puede descargarlos desde: https://src.springframework.org/svn/spring-samples/ Los pasos son: 1.Definir el grano de configuración azulejos (archivo XML de configuración)

<!-- Initializes the Apache Tiles CompositeView system --> 
    <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
     <beans:property name="definitions"> 
      <beans:value> 
       /WEB-INF/**/tiles.xml 
      </beans:value> 
     </beans:property> 
     <beans:property name="checkRefresh" value="true" /> 
    </beans:bean> 
  1. Definir las baldosas ver resolver clase anidada en UrlBasedViewResolver

    value = "org.springframework.web.servlet.view.tiles2. TilesView"/>

  2. Definir los archivos de definición de tiles.xml para cada diseño/página etc.

1
<bean id="tilesviewResolver" class="org.springframework.web.servlet.view.tiles2.TilesViewResolver" 
      p:order="0"/> 

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
     <property name="definitions"> 
      <list> 
       <value>/WEB-INF/tiles-defs/tilesConfig.xml</value> 
      </list> 
     </property> 
</bean> 

Ver TilesViewResolver

Cuestiones relacionadas