2016-07-14 17 views
3

Я искал веб в течение нескольких часов, и я не могу найти ответ на простой вопрос в Struts 2. В принципе, у меня есть следующее действие в Struts 1, которое является простым вперед, и я хочу воспроизвести его в Struts 2:Как сделать простой переадресацию в Struts 2?

<action path="/az/api/v22/my-tenants" forward="/components/c/apis/v22/my-tenants.jsp"> 
     </action> 

Я мог бы написать класс действия, чтобы сделать это, но я думаю, что Struts2 должен иметь какой-то способ сделать это без того, чтобы написать класс действия, так как это простое перенаправление.

+0

Что вы хотите достичь с этим? –

ответ

2

Создать бездействующим результат в struts.xml

struts.xml:

<package name="v22" namespace="/az/api/v22" extends="struts-default"> 
    <action name="my-tenants"> 
     <result>/components/c/apis/v22/my-tenants.jsp</result> 
    </action> 
</package> 

Эта конфигурация определяет пакет с пространством имен /az/api/v22 и действий имени my-tenants. Поэтому, если вы используете путь /az/api/v22/my-tenants, он будет сопоставлен с приведенным выше конфигурацией действий, потому что по умолчанию actionperper использует пространство имен и имя действия вместе, чтобы получить конфигурацию действия.

В теге действия нет атрибута class, а вместо него используется класс ActionSupport. Этот класс настроен по умолчанию в пакете struts-default.

В результате этого достаточно, чтобы определить местоположение JSP, поскольку Struts2 по умолчанию используется диспетчером, который перенаправляет на JSP, и он использует "success" результирующий код по умолчанию в результате конфигурации, который возвращается по умолчанию, ActionSupport класса.

+0

Это можно сделать без использования атрибута пространства имен пакета. Проблема в том, что пакет в Struts2 уже создан, что эти вызовы будут частью этого. Итак, я не контролирую пространство имен пакета. –

+0

Без атрибута пространства имен вам не хватает части, которая должна быть добавлена ​​перед именем действия. –