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