Struts 2插件转换 - 从Codebehind到Convention插件

时间:2013-06-30 06:15:48

标签: java struts2 annotations struts-config struts2-convention-plugin

我很难将 codebehind 注释转换为传统的struts.xml文件。

如何识别动作类中的动作名称?因为如果写方法public String list{} - 与JSP product-list.jsp匹配的操作将自动识别页面,并且URL是product!list。什么是传统的插件?

当前网址:

http://localhost:7001/example/product!search - jsp名称product-search.jspProductAction - 动作类。

请告诉我如何配置上述配置等同的struts.xml文件。

我尝试过如下:

<package name="example" namespace="/" extends="struts-default">
  <action name="Search">
    <result>product-search.jsp</result>
  </action>         
</package>

错误:

org.apache.struts2.dispatcher.Dispatcher - Could not find action or result
There is no Action mapped for namespace / and action name part. - [unknown location]

1 个答案:

答案 0 :(得分:0)

在Struts2中,操作映射在方法上。上面的网址应该映射为

<package name="example" namespace="/" extends="struts-default">
   <action name="product" method="search"> <!-- case sensitive -->
     <result>product-search.jsp</result>
   </action>
</package>

或通过注释

@Namespace("/")
public class ProductAction extends ActionSupport {

  public String execute() {
    return SUCCESS;

  }

  @Action(value="product",
    results=@Result(location="/product-list.jsp")
  )
  public String search() {
    return SUCCESS;
  }
}

请注意,方法execute未映射,因此不会执行。如果您需要该方法执行,您应该创建映射到它。为此,您可以在类或方法execute上放置注释。

您可以在site上找到更多示例。