Перенаправление действий в struts.xml - PullRequest
12 голосов
/ 10 февраля 2011

Могу ли я перенаправить на другое действие из-за действия распорок? Таким образом, результатом действия является другое действие, т. Е. Здесь приведен фрагмент 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>

Спасибо

1 Ответ

22 голосов
/ 10 февраля 2011

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

Для пересылки:

<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". Не зло, но легко злоупотреблять, вам, вероятно, стоит обратить внимание на перемещение решающей логики (логики, определяющей, какое действие вызывать несколько, на перехватчик) или, если логика в основном связана с настройкой, тогда некоторый тип служебного класса вызывается метод подготовить действия (или сразу в метод подготовки) ... Если для действия требуется параметры перед вызовом prepare, используйте paramsPrepareParamsStack.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...