4

コンベンション プラグイン Struts2 を使用してアプリケーションを実行しようとしていました。アプリケーションは次のstruts.xmlように構成しても問題ありませんでした。

<struts>

    <package name="struts2demo" extends="struts-default">
    <action name="hey" class="action.CountryAction" method="get">
       <result name="success">/index.jsp</result>
    </action>
    <action name="add" class="action.CountryAction" method="add">
       <result type="redirect" name="success">hey</result>
    </action>
    <!-- Add your actions here -->
    </package>

</struts>

今、私はそれを削除しstruts.xml、次のような注釈を追加しました:

@Namespace("/")
@ResultPath(value="/")
public class CountryAction extends ActionSupport implements ModelDriven<Country>{
    private List<Country> worldCountry;
    private Country country = new Country();



    public Country getCountry() {
            return country;
        }

    public void setCountry(Country country) {
            this.country = country;
        }

 //   HttpServletRequest request;
@Action(value="/hey",results={@Result(name="success",location="/index.jsp")})
    public String get() throws SQLException
    {
        CountryService cs = new CountryService();
        setWorldCountry(cs.getCountry());
      //  System.out.println(getWorldCountry());
        return SUCCESS;
    }

     public List<Country> getWorldCountry() {
        return worldCountry;
    }

    public void setWorldCountry(List<Country> worldCountry) {
        this.worldCountry = worldCountry;
    }

    @Override
    public Country getModel() {
        return country;
    }
}

しかし、アプリケーションを実行しようとすると、次のエラーが発生します。

メッセージ:

There is no Action mapped for namespace [/] and action name [hey] associated with context path [/JustStruts2].

web.xmlはこれです:

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
         <param-name>struts.devMode</param-name>
         <param-value>true</param-value>
      </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

私が間違っているところでは、助けていただければ幸いです。
よろしく。

4

1 に答える 1

3

メッセージによると、Struts[hey]は、アクション構成に見つからないことを通知します。あなたはstruts.xmlスラッシュなしでそれを定義しました。注釈で同じことを行います。index.jspコンテナー自体では処理できるが、Struts2 では処理できないものはマップしないでください。"success" という名前はデフォルトで使用されるため、必須ではありません。

@Action(value="hey", results = { @Result(location="/page.jsp") })

必要ありませんのでご注意ください@ResultPath

于 2013-04-05T09:30:42.113 に答える