Мы пытались перенаправить одно действие на другое, надеясь, что данные будут переданы между соответствующими ActionForm
beans. Первое действие получает запрос от браузера, печатает поле данных и перенаправляет его на другое действие, которое печатает одно и то же поле и перенаправляет на JSP.
Проблема заключается в том, что ActionTo
печатает неверное значение - его commonInt
имеет значение по умолчанию 0
, а мы ожидаем 35
.
Вот пример представления:
public class ActionFrom extends DispatchableAction{
public ActionForward send(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){
FormA formA = (FormA)form;
formA.commonInt = 35;
System.out.println("sent: "+formA.commonInt);
return mapping.findForward("send");
}
}
public class ActionTo extends DispatchableAction{
public ActionForward recv(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){
FormB formB = (FormB)form;
System.out.println("recv= "+formB.commonInt);
return mapping.findForward("send");
}
}
И actionForms:
public class FormA extends ActionForm {
public int intA;
public int commonInt;
}
public class FormB extends ActionForm{
public int intB;
public int commonInt;
}
Отображения:
<action path="/from" type="EXPERIMENT.ActionFrom" name="formA" scope="request"
input="something.jsp" parameter="dispatch" unknown="false" validate="false">
<forward name="send" path="/to.do?dispatch=recv" redirect="false"/>
</action>
<action path="/to" type="EXPERIMENT.ActionTo" name="formB" scope="request"
input="something.jsp" parameter="dispatch" unknown="false" validate="false">
<forward name="send" path="/login.do" redirect="false"/>
</action>
Есть ли способ сделать это? Или обе формы должны быть одинаковыми?
Обходной путь, который мы пробовали, состоял в том, чтобы передавать данные через запрос, но он может стать большим и беспорядочным.