Должна ли аннотация @Result быть только на уровне класса или нет?

Я читаю документацию Struts2 и обнаружил, что в ее документации есть противоречия. По этой ссылке https://struts.apache.org/docs/convention-plugin.html< /а>

Плагин Convention позволяет классам действий определять разные результаты действия. Результаты делятся на две категории: глобальные и локальные. Глобальные результаты являются общими для всех действий, определенных в классе действий. Эти результаты определяются как аннотации к классу действий. Локальные результаты применяются только к методу действия, для которого они определены

Однако в другой ссылке https://struts.apache.org/docs/result-annotation.html рекомендуется:

Аннотация @Result находится на уровне класса Action, а не на уровне метода. Это соответствует тому, что находится в конфигурации Action на основе XML. Не поддавайтесь искушению аннотировать методы действия; это не сработает.

Так какой из них правильный? Можно ли определить @Result на уровне метода?


person Xuzheng Wang    schedule 20.01.2016    source источник


Ответы (1)


Локальные результаты настраиваются на конфигурацию действия с использованием свойства @Action. Другими словами, локальные результаты настраиваются там, где это разрешено. Используя аннотацию @Action, вы указываете список свойств results. Здесь вы можете добавить @Result аннотации.

Приведен отрывок из книги Дэйва Ньютона "Разработка веб-приложений Apache Struts 2" :

Мы также можем настроить результаты с аннотациями Конвенции. Нам не нужно полагаться на идею плагина Convention о том, как должны называться наши результирующие JSP-файлы. Мы можем определить результаты вручную, используя аннотацию @Result и аннотацию @Results, если нам нужно несколько результатов. (Мы можем использовать аннотацию @Results только на уровне класса, в то время как аннотации @Action и @Actions доступны на уровне метода. Мы можем определить несколько результатов на уровне действия с помощью свойства results аннотации @Action.)

Определение вики также правильное

Глобальные результаты являются общими для всех действий, определенных в классе действий. Эти результаты определяются как аннотации к классу действий. Локальные результаты применяются только к методу действия, для которого они определены. Вот пример различных типов аннотаций результатов:

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;
  }
}
person Roman C    schedule 20.01.2016