Java Struts 1: передайте от действия до действия. Передающие данные через ActionForms

Датедиф считает, как часто граница пересекается.

SELECT DATEPART(WEEK, '20190104 23:01:11.821')
,       DATEPART(WEEK, '20190106 23:01:11.821')

Возвращает

1   2

Итак, одна недельная граница была пересечена, поэтому datediff возвращает 1.

14
задан Aleksandr M 17 March 2017 в 19:28
поделиться

3 ответа

Для этого нужно использовать одну и ту же форму действия для обоих действий. Есть ли конкретная причина, по которой вам нужны две разные формы действий? Если нет, попробуйте изменить второе сопоставление действий на name = "formA" и само действие, чтобы использовать FormA, а не FormB.

6
ответ дан 1 December 2019 в 13:59
поделиться

Похоже, это может стать беспорядочным, я бы оставил это простым и использовал ActionForm только для хранения данных Request .

public class FormA extends ActionForm {
    public int intA;
    public int commonInt;
}

После отправки Запроса извлеките данные из ActionForm и поместите их куда-нибудь в сеанс, либо напрямую, либо в хранилище данных внутри сеанса, чтобы сохранить это вид информации.

public class ActionTo extends DispatchableAction {
  public ActionForward recv(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) {
    FormA form = (FormA)form;

    DataHolder dataHolder = request.getSession().getAttribute("dataHolder");
    dataHolder.setCommonInt(commonInt);
    dataHolder.setIntA(intA);

    return mapping.findForward("send");
  }
}

В идеале, если вы не слишком много инвестируете в Struts 1, я бы взглянул на Struts 2.

0
ответ дан 1 December 2019 в 13:59
поделиться

Том, используя ваше решение и объединив его с ActionRedirect , предложенным Винсентом Рамдани, я тоже получил то, что вы хотели.

Код очень прост и позволяет вам иметь отдельные формы для каждого действия.

ActionRedirect redirect = new ActionRedirect(mapping.findForward("send"));
redirect.addParameter("commonInt", formA.getCommonInt());
return redirect;
formB.setCommonInt(request.getParameter("commonInt"));

Это в конечном итоге спасло меня и помогло мне не прилагать усилий, чтобы изменить это прямо в JSP, что было бы ужасно.

10
ответ дан 1 December 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: