0

Struts 2 アクション名でスラッシュを有効にしようとしています。これを構成ファイルに入れました:

<struts>
    <constant name="struts.devMode" value="true" />
    <constant name="struts.action.extension" value=","/> 
    <constant name="struts.multipart.maxSize" value="2147483648" />
    <constant name="struts.enable.SlashesInActionNames" value="true"/>

    <package name="myApp" extends="struts-default">                         
        <action name="home" class="net.myapp.actions.HomeAction" method="execute">
            <result name="landing">/landing.jsp</result>
        </action>
        <action name="/ajax/foo" class="net.myApp.actions.ajax.FooAction" method="execute">
            <result name="success">/foo.jsp</result>
        </action>
    </package>        

</struts>

たとえば、このアプリのホームページだけにアクセスすると、http://localhost:8034/myAppホームページが正しく表示されます。しかし、 にアクセスするhttp://localhost:8034/myApp/ajax/fooと、エラーが表示されます:There is no Action mapped for action name ajax/foo.上記で 2 番目のアクションとして説明したにもかかわらず。

私は何を間違っていますか?

4

1 に答える 1

3

名前空間も必要だと思いますのでajax、あなたの場合は名前空間になります:

<package name="myApp" extends="struts-default" namespace="/ajax">    
  <action name="foo" class="net.myApp.actions.ajax.FooAction" method="execute">
     <result name="success">/foo.jsp</result>
  </action>
</package>

foo/barなどのアクション名にスラッシュを使用できることに注意してください/ajax/foo/bar

ところで、エラー メッセージにはThere is no Action mapped for action name ajax/foo.、つまり struts はという名前のアクションを探しajax/fooますが、 action しかありません/ajax/foo

于 2013-10-01T10:54:57.397 に答える