0

を使用したプロジェクトがありstruts 2.1.8ます。プロジェクトは、 を使用したアノテーションによって構成されますstruts2-convention-plugin。web.xml の私の struts 設定は次のとおりです。

<filter>
  <filter-name>struts2Filter</filter-name>
  <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>  
    <filter-name>struts2Filter</filter-name>  
    <url-pattern>*.jsp</url-pattern>  
</filter-mapping>
<filter-mapping>   
    <filter-name>struts2Filter</filter-name>   
    <url-pattern>/struts/*</url-pattern>   
</filter-mapping>

struts.xml:

<constant name="struts.convention.default.parent.package" value="borrow-default" />
<constant name="struts.convention.package.locators" value="action" />
<constant name="struts.convention.package.locators.basePackage" value="com.abc.action" />
<constant name="struts.convention.result.path" value="/" />

A.java:

@Namespace("/regist")
public class A extends ActionSupport{
    @Action(value="/a", results = {@Result(location = "/a/test.jsp")})
    public String execute(){
        return SUCCESS;
    }
}

これが問題です。url と で test.jsp にアクセスできますが、それでも urlhttp://localhost:8080/a/test.jsphttp://localhost:8080/regist/a.action同じページにアクセスできますhttp://localhost:8080/a/test.action。なぜこれが起こるのかわかりません。設定またはコードの何が問題なのですか?


他の URL も試してみましたが、名前空間が有効になっていないようです。

4

2 に答える 2

1

web.xml では、URL パターンは次のようになります。

<url-pattern>/struts/*</url-pattern>

しかし、あなたはjspを配置し、/a/test.jspからそれを取得したら、それを確認してください...

于 2013-02-21T07:47:01.963 に答える
0

ストラットを 2.3.15.1 にアップグレードしたところ、この質問は消えました

于 2013-10-18T01:39:02.333 に答える