Мы пытались перенаправить с одного действия на другое, надеясь, что данные будут передаваться между соответствующими ActionForm
бинами. Первое действие получает запрос от браузера, печатает поле данных и пересылает его другому действию, которое печатает то же поле и перенаправляет в 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>
Есть ли способ сделать это? Или обе формы должны быть одинаковыми?
Обходной путь, который мы попробовали, состоял в том, чтобы передать вещи через запрос, но он может стать большим и грязным.