У меня не получилось просто заменить сервлет Dispatcher на DynamicMappingFilter (я получил сообщение об ошибке, что DynamicMappingFilter работает только в сочетании с StripesFilter). Итак, теперь у меня есть два фильтра и одно сопоставление фильтров в моем файле web.xml:

отаю над книгой Полос Фреда Дауда и пытаюсь преобразовать приложение Hello World, чтобы использовать дружественные URL-адреса, так как я не большой поклонник отображений на основе суффиксов, таких какHTTP: // локальный: 8080 / Getting_Started / Hello.action.

Вот раньше ...

index.jsp:

<jsp:forward page="/Hello.action"/>

web.xml:

<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>*.action</url-pattern>
</servlet-mapping>

и у меня нет UrlBinding на моем HelloActionBean. У меня работает пример книги.

Мне интересно, могут ли примеры книг подойти для более ранней версии Stripes, так как я скачал 1.5.1, и мой web.xml определяет StripesFilter и StripesDispatcher, тогда как я видел DynamicMappingFilter, используемый в другом месте, например, вэта статья Фред на TheServerSide.

Во всяком случае, я сделал следующие изменения:

index.jsp:

<jsp:forward page="/hello"/>

web.xml:

<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/*</url-pattern>
 </servlet-mapping>

HelloActionBean.java:

**@UrlBinding("/hello")**
public class HelloActionBean implements ActionBean 
{

Тем не менее, когда я пытаюсь загрузить приложение черезHTTP: // локальный: 8080 / Getting_Started Я вижу это:

net.sourceforge.stripes.exception.ActionBeanNotFoundException: Could not locate an ActionBean that is bound to the URL [/]. Commons reasons for this include mis-matched URLs and forgetting to implement ActionBean in your class. Registered ActionBeans are: {/hello=class stripesbook.action.HelloActionBean, /controller/DefaultView.action=class net.sourceforge.stripes.controller.DefaultViewActionBean, /hello/=class stripesbook.action.HelloActionBean, /controller/DefaultView.action/=class net.sourceforge.stripes.controller.DefaultViewActionBean}
    at net.sourceforge.stripes.controller.AnnotatedClassActionResolver.getActionBean(AnnotatedClassActionResolver.java:341)

и если я получу к нему доступ черезHTTP: // локальный: 8080 / Getting_Started / привет сервер, похоже, зацикливается, бросая одно исключение за другим.

Любые предложения приветствуются - спасибо.

Ответы на вопрос(2)

ingFilter (я получил сообщение об ошибке, что DynamicMappingFilter работает только в сочетании с StripesFilter). Итак, теперь у меня есть два фильтра и одно сопоставление фильтров в моем файле web.xml:

<filter>
    <display-name>Stripes Filter</display-name>
    <filter-name>StripesFilter</filter-name>
    <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
    <init-param>
        <param-name>ActionResolver.Packages</param-name>
        <param-value>com.package.myactions.package</param-value>
    </init-param>
</filter>

<filter>
    <description>Dynamically maps URLs to ActionBeans.</description>
    <display-name>Stripes Dynamic Mapping Filter</display-name>
    <filter-name>DynamicMappingFilter</filter-name>
    <filter-class>
        net.sourceforge.stripes.controller.DynamicMappingFilter
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>DynamicMappingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>
Решение Вопроса

Я удалил существующие определения сервлетов и отображений сервлетов DispatcherServlet в web.xml и заменил их на DynamicMappingFilter.

В качестве бонуса, чтобы изменить способ передачи событий ссылки, например, чтобы

http://localhost:8080/getting_started/hello?randomDate=

становится

http://localhost:8080/getting_started/hello/randomDate

измените UrlBinding для ActionBean на:

@UrlBinding("/hello/{$event}")

Ваш ответ на вопрос