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 处理的映射。默认情况下使用名称“成功”,因此没有必要。

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

请注意,这@ResultPath不是必需的。

于 2013-04-05T09:30:42.113 回答