2010-04-20 5 views
5

У меня чертовски временные URL-адреса с Spring 3.0 MVC. Я просто создаю HelloWorld, чтобы попробовать, как построить RESTful webapp весной, ничто не теоретически сложно.Как создать Spring 3 + Tiles 2 webapp с использованием URL-адресов REST-ful?

Все примеры, которые я смог найти, основаны на конфигурациях, которые обращают внимание на расширения файлов («* .htm» или «* .do»), включают префикс имени искусственного каталога («/ foo»)) или даже префиксные пути с точкой (уродливые), все подходы, которые используют некоторый искусственный шаблон регулярного выражения в качестве сигнала для распознавателя. Для подхода REST я хочу избежать всех этих гадостей и использовать только естественные шаблоны URL моего приложения. Я предположил бы (возможно, неправильно), что в web.xml я установил url-шаблон «/ *» и передал все в разрешение DispatcherServlet для разрешения, а затем просто полагался на шаблоны URL в моем контроллере.

Я не могу надежно получить свой резольвер (ы), чтобы поймать шаблоны URL-адресов, и во всех моих испытаниях это приводит к ошибке, не найденной ресурсом, переполнению стека (loop) или некоторому непрозрачному Spring 3 ServletException трассировка стека — Одним из моих текущих разочарований в Spring, как правило, является то, что сообщения об ошибках не всегда очень полезны.

Я хочу работать с резонатором Tiles 2. Я размещал свои * .jsp-файлы в WEB-INF/views/и имел один файл index.jsp в корневой директории приложения, перенаправляя файл индекса, установленный моим layout.xml (Конфигуратор Tiles 2).

я все нормальные конфигурации Spring 3 высокого уровня:

<mvc:annotation-driven /> 

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

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

... а затем всех видов комбинаций и конфигураций UrlBasedViewResolver, InternalResourceViewResolver, UrlFilenameViewController и т.д. всяческими variantions в части моего Конфигурационный файл Tiles 2. Затем в моем контроллере я пытаюсь забрать мои шаблоны URL. Проблема в том, что я не могу надежно даже получить распознаватель (ы), чтобы поймать шаблоны для отправки на мой контроллер.

Это теперь растянуто до нескольких дней без какого-либо реального прогресса над тем, что, как я думал, будет очень простым в реализации. Возможно, я попытаюсь сделать слишком много сразу, хотя я бы подумал, что это должна быть простая (почти стандартная) конфигурация. Я просто пытаюсь создать простое приложение типа HelloWorld, я бы не ожидал, что это ракетостроение.

Вместо того, чтобы отправлять мои собственные конфигурации (которые варьировались по всей карте), кто-нибудь знает пример онлайн: показывает простое веб-приложение Spring 3 MVC + Tiles 2, в котором используются URL-адреса REST-ful (т. Е. избегая форсированных шаблонов URL-адресов, таких как расширения файлов, добавленных имен каталогов или точек) и полагается исключительно на код/​​аннотацию Spring 3 (т. е. ничего за пределами самого Spring MVC) для этого? Есть ли простой способ сделать это?

Большое спасибо за любую помощь.

+0

Я тоже пытаюсь использовать Spring 3 MVC Web с Apache Tiles с использованием RESTful URL-адреса в Spring. Я могу получить страницу для рендеринга, но я получаю бесконечную рекурсию от Tomcat, которая, как я подозреваю, получен из корневого сервлета, отображающего «/». –

ответ

0

Пример приложения пружина: PetCare имеет связей, определенные в успокоительной образом. Вы можете скачать их с: https://src.springframework.org/svn/spring-samples/ Этапы: 1.Определение конфигурации плитки компонент (конфигурации XML-файл)

<!-- 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. Определить плитки просмотра класса распознаватель вложенной в UrlBasedViewResolver

    значение = "org.springframework.web.servlet.view.tiles2. TilesView»/>

  2. Определить файлы определений tiles.xml для каждого макета/страницы и т.д.

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> 

См TilesViewResolver