フレンドリーURLを使用するにはストライプのアプリケーションを変換します

StackOverflow https://stackoverflow.com/questions/725534

  •  05-09-2019
  •  | 
  •  

質問

私はフレッド・ダウドのストライプ本を働いて、私は<のhref = "HTTPなどの接尾語ベースのマッピングの大ファンではないとして、友好的なURLを使用するようにHello Worldアプリケーションを変換しようとしています:// localhostを:8080 /getting_started/Hello.action」のrel = "noreferrer">のhttp:// localhostを: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>

と私は私のHelloActionBeanにはUrlBindingを持っていません。私は本例が動作しています。

私は他の場所で使用DynamicMappingFilter、例えばを見てきたのに対し、私は1.5.1をダウンロードしてきたように本例は、ストライプの以前のバージョンに合わせて、私のweb.xmlファイルがStripesFilterとStripesDispatcherを定義する場合は、

私は思ったんだけどをrel="noreferrer">ます。

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

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 /ハローのサーバがそうです別の後に一つの例外をスローループに行くために。

任意の提案が高く評価 - 。ありがとう

役に立ちましたか?

解決

私はいくつか他のものを試してきたし、それが働いてしまった...

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

ボーナスとして、例えばように、リンクイベントが渡される方法を変更するには

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

となります。

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

にActionBeanにUrlBindingを変更

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

他のヒント

私はちょうどDynamicMappingFilter(私はDynamicMappingFilterに関するエラーメッセージのみStripesFilterと連携して動作してしまった)とのディスパッチャサーブレットを交換するために、

これは動作しませんでした。だから私は今、私のweb.xmlで構成された2つのフィルタと1のfilter-mappingを持ってます:

<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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top