Подтвердить что ты не робот

Переадресация действий в struts.xml

Можно ли перенаправить на другое действие из действия struts? Таким образом, результатом действия является другое действие i.e - вот фрагмент struts.xml

    <action name="newRedirect" >
        <result>formsearch</result>
    </action>

    <action name="formsearch" class="com.event.action.SearchForm"
    method="execute">
        <result name="success">/form.jsp</result>
    </action>

Спасибо

4b9b3361

Ответ 1

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

Переслать:

<action name="newRedirect" >
    <result type="redirect">/formsearch.action</result>
</action>

Цепочка:

<action name="newRedirect" >
    <result type="chain">formsearch</result>
</action>

В качестве удобства тип результата перенаправления можно изменить на тип результата "redirectAction"... который позволяет нам написать:

 <action name="newRedirect" >
    <result type="redirectAction">formsearch</result>
</action>

Последнее, вероятно, то, что вы хотите.

Теперь предупреждение, переадресация цепочек/действий происходит там с помощью инструкции "goto". Не зло, но легко злоупотреблять, вам, вероятно, следует искать движущуюся логику (логику, определяющую, какое действие вызывать от нескольких к перехватчику), или если логика в основном связана с настройкой, то некоторый тип класса утилиты, который вызывается метод подготовки действий (или в метод подготовки полностью)... Если действие требует параметров перед вызовом команды подготовки, используйте параметр paramsPrepareParamsStack.