Struts 2 возвращает значение по умолчанию

В документации Struts сказано:

Другая распространенная схема рабочего процесса заключается в том, чтобы сначала отобразить страницу с использованием альтернативного метода, например ввода, а затем отправить ее обратно в метод выполнения по умолчанию.

https://struts.apache.org/core-developers/action-configuration.html#post-back-default

Как это сделать, используя только аннотацию? Кажется, вызывается только метод execute().


person Community    schedule 12.10.2020    source источник
comment
Какую аннотацию вы имели в виду?   -  person Roman C    schedule 16.10.2020
comment
Аннотации Struts 2.   -  person    schedule 24.10.2020


Ответы (1)


В документации сказано, что для рендеринга страницы можно использовать альтернативный метод, например input. Это означает, что когда вы отправляете форму на странице, она может вернуться с результатом input. Обычно это происходит автоматически во время процесса проверки, если проверка не удалась или hasErrors. Затем вы можете отправить форму обратно в метод execute действия по умолчанию. Вам не нужно указывать method в конфигурации действия. Также, если вы не указали атрибут action в теге form, будет выполнено то же действие, которое использовалось для отображения страницы.

Настроив действия, вы можете использовать одну и ту же страницу для результата success при рендеринге страницы методом GET и input при запросе метода POST.

Чтобы использовать аннотации для настройки сопоставления действий, вы можете использовать плагин конвенции.

Также обратите внимание, чтобы сопоставить метод класса с действием, вы должны поместить аннотацию @Action непосредственно к этому методу, а не к классу.

Более подробное объяснение и документацию вы можете найти здесь.

@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.

person Roman C    schedule 30.10.2020