支柱注释@Result是否应该只在类级别



我正在阅读 Struts2 文档,发现其文档中存在某种矛盾。在此链接中 https://struts.apache.org/docs/convention-plugin.html

约定插件允许操作类为操作定义不同的结果。 结果分为两类,全局和局部。全局结果在操作类中定义的所有操作之间共享。这些结果定义为操作类的批注。 本地结果仅适用于定义它们的操作方法

但是,在另一个链接 https://struts.apache.org/docs/result-annotation.html 中,建议

@Result注释位于操作类级别,而不是方法级别。这与基于 XML 的操作配置中的内容匹配。不要试图注释你的行动的方法;它不会起作用。

那么哪一个是正确的呢?是否可以在方法级别定义@Result

本地结果使用@Action属性配置为操作配置。换句话说,本地结果被配置在允许的位置。使用@Action批注可以指定属性results列表。您可以在此处添加@Result注释。

Dave Newton的书"Apache Struts 2 Web Application Development"中有一段摘录:

我们还可以使用约定的注释来配置结果。我们不 必须依靠约定插件的想法,我们的结果是什么 JSP 文件应命名。 我们可以使用 @Result注释,以及@Results注释(如果需要多个) 结果。(我们只能在类中使用@Results注释 级别,而@Action@Actions注释可在 方法级别。我们可以在操作级别定义多个结果 通过@Action注释的results属性。

维基定义也正确

全局结果在操作类中定义的所有操作之间共享。这些结果定义为操作类的批注。 本地结果仅适用于定义它们的操作方法。下面是不同类型的结果注释的示例:

com.example.actions.HelloWorld

package com.example.actions;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
@Results({
  @Result(name="failure", location="fail.jsp")
})
public class HelloWorld extends ActionSupport {
  @Action(value="/different/url",
    results={@Result(name="success", location="http://struts.apache.org", type="redirect")}
  )
  public String execute() {
    return SUCCESS;
  }
  @Action("/another/url")
  public String doSomething() {
    return SUCCESS;
  }
}

相关内容

  • 没有找到相关文章

最新更新