Как создать веб-приложение Spring 3 + Tiles 2, используя URL-адреса REST? - PullRequest
5 голосов
/ 21 апреля 2010

У меня чертовски много времени для разрешения URL с помощью Spring 3.0 MVC.Я просто собираю HelloWorld, чтобы попробовать, как создать веб-приложение RESTful в Spring, ничего теоретически сложного.

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

Я не могу надежно заставить свой распознаватель (и) перехватывать шаблоны URL, и во всех моих испытаниях это приводит к ошибке «ресурс не найден», переполнению стека (циклу) или некоторому непрозрачному Spring3 Трассировка стека 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 и т. Д. Со всеми вариантами изменений вмой файл конфигурации Tiles 2.Затем в моем контроллере я пытаюсь подобрать шаблоны URL.Проблема в том, что я не могу надежно заставить распознаватель (и) перехватывать шаблоны для отправки на мой контроллер.

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

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

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

Ответы [ 3 ]

1 голос
/ 02 ноября 2011
<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

0 голосов
/ 10 сентября 2011

Пример использования пружины: 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

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

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

0 голосов
/ 06 мая 2010

Вы можете попробовать образец MVC-AJAX Spring 3.

https://src.springframework.org/svn/spring-samples/

...