Я использую Struts/JSP для веб-приложения. У меня есть страница A, где я собираю определяемые пользователем параметры (поскольку параметры запроса не могут сделать их параметрическими усилителями сессии), и затем я перехожу к странице B для выяснения у да/нет своего рода вопрос пользователю. В случае да я должен возвратиться к странице A и продолжить регулярную обработку. Но очевидно объекта запроса для страницы A не стало.
Есть ли способ установить страницу объект запроса A как параметр на странице B так, чтобы, когда я возвращаюсь к странице A, у меня был тот же объект запроса, который что я имел, когда я был там (на странице A) первым разом.
Мне нужно что-то как ниже:
страница A - (req1)------> страница B (устанавливает req.setAttr ('prevReq', req1))------> страница A (req = req.getAttr ('prevReq'))
Любая справка ценится.
Нет, ты не можешь делать то, что задумал. Вы понимаете, как работает цикл HTTP-запрос-ответ?
Невозможно сохранить запрос для страницы A, а затем на странице B ответить на этот запрос, чтобы заставить браузер вернуться на страницу A. Это просто не так, как работает цикл запрос-ответ.
Что вы можете сделать, так это хранить данные в объекте сеанса. Вы можете вызвать request.getSession ()
, чтобы получить объект HttpSession
, в котором вы можете хранить данные в течение всего сеанса этого пользователя. На странице A вы можете снова получить данные из объекта сеанса.
Используйте скрытые элементы ввода ( input type = "hidden"
), при этом вы сохраняете параметры запроса отправки формы. Не дублируйте / не храните его как атрибут запроса. Они теряются, когда заканчивается ответ.
Поскольку я не занимаюсь struts, вот базовый пример того, как должен выглядеть JSP (оставив метки ввода и очевидные проблемы безопасности, такие как XSS, вне рассмотрения, Struts должен быть достаточно умен, чтобы справиться с этим сам) .
Страница A:
<form>
<input type="text" name="input1" value="${param.input1}">
<input type="text" name="input2" value="${param.input2}">
<input type="text" name="input3" value="${param.input3}">
<input type="hidden" name="yesorno" value="${param.yesorno}">
<input type="submit" value="go to page B">
<input type="submit" value="submit">
</form>
Страница B
<form>
<input type="checkbox" name="yesorno" value="yes" ${!empty param.yesorno ? 'checked' : ''}>
<input type="hidden" name="input1" value="${param.input1}">
<input type="hidden" name="input2" value="${param.input2}">
<input type="hidden" name="input3" value="${param.input3}">
<input type="submit">
</form>
В многостраничном процессе вам нужно будет сохранить все периодически собираемые данные в сеансе. См. HttpServletRequest.getSession () и HttpSession.setAttribute (String, Object) .