5

私はhttp://localhost:8080/getting_started/Hello.actionのような接尾辞ベースのマッピングがあまり好きではないので、Fred Daoud の Stripes book に取り組んでいて、Hello World アプリケーションをわかりやすい URL を使用するように変換しようとしています。

こちらが前...

index.jsp:

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

web.xml:

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

そして、HelloActionBean に UrlBinding がありません。本の例が機能しています。

私は 1.5.1 をダウンロードし、私の web.xml は StripesFilter と StripesDispatcher を定義しているので、本の例が以前のバージョンの Stripes に適しているかどうか疑問に思っていますサーバー側で。

とにかく、私は次の変更を加えました:

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://localhost: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://localhost:8080/getting_started/helloからアクセスすると、サーバーはループに陥り、次々と例外がスローされるようです。

任意の提案をいただければ幸いです - ありがとう。

4

2 に答える 2

6

私は他のいくつかのことを試し、それを機能させてきました...

web.xmlの既存のDispatcherServletサーブレットとサーブレットマッピング定義を削除し、DynamicMappingFilterに置き換えました。

ボーナスとして、リンクイベントの受け渡し方法を変更するために、たとえば

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

になります

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

ActionBeanのUrlBindingを次のように変更します。

@UrlBinding("/hello/{$event}")
于 2009-04-07T13:52:37.000 に答える
1

Dispatcher サーブレットを DynamicMappingFilter に置き換えるだけではうまくいきませんでした (DynamicMappingFilter は StripesFilter と組み合わせてのみ機能するというエラー メッセージが表示されました)。したがって、web.xml で 2 つのフィルターと 1 つのフィルター マッピングが構成されています。

<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>
于 2009-08-20T13:05:46.073 に答える