2011-02-10 2 views
12

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

Благодаря

ответ

21

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

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

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

+0

благодарит миллион –

Смежные вопросы