Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Изменение URL после переадресации Dispatcher-ом JS


Автор: Tsyklop 26.4.2016, 14:46
Не меняется URL после переадресации на страницу dispatcher-ом с сервлета.

Есть страница авторизации(index.jsp - стартовая страница), есть страница куда попадают юзеры после успешной авторизацииB. Есть сервлет Auth, в котором происходит авторизация. Используется метод Post. Сервлет обращается к классу который производит подключение к бд и проверяет есть ли такой юзер(проверяет логин и пароль тоже) и возвращает ture или false. Если он вернёт false то на главной странице в форме авторизации появится текст ошибки. По этой причине мне приходится использовать Dispatcher. Если возвращается ошибка да и если успешная авторизация URL не меняется. Он он так и остаётся "/Auth".

Вопрос как решать данную проблему? sendRedirect мне не подходит ибо мне нужно выводить сообщение об ошибке если такова будет. А так sendRedirect изменяет ссылку.

Как выйти с этого положения?

Автор: LSD 27.4.2016, 11:41
Если ты хочешь перенаправить пользователя на новый URL и показать ему сообщение об ошибке, то у тебя 2 варианта:
1. Показать сообщение об ошибке, а потом сделать редирект JS-ом.
2. Сделать редирект и сообщение об ошибке уже показать на новом URL.

Автор: Tsyklop 27.4.2016, 12:02
Цитата(LSD @ 27.4.2016,  11:41)
Если ты хочешь перенаправить пользователя на новый URL и показать ему сообщение об ошибке, то у тебя 2 варианта:
1. Показать сообщение об ошибке, а потом сделать редирект JS-ом.
2. Сделать редирект и сообщение об ошибке уже показать на новом URL.

JS имеется в виду JSP. Не влезло.

2. коим образом это сделать? Если делать Редирект то сообщение не выводится..

Автор: LSD 27.4.2016, 12:42
Цитата(Tsyklop @  27.4.2016,  13:02 Найти цитируемый пост)
JS имеется в виду JSP. Не влезло.

JS  - JavaScript.


Цитата(Tsyklop @  27.4.2016,  13:02 Найти цитируемый пост)
коим образом это сделать?

Редирект же идет на некий URL. Вот в обработчике этого URL и надо показать сообщение. Тут скорее вопрос как передать информацию об ошибке, тут есть варианты:
1. Через GET параметры.
2. Через сессию.

Автор: Tsyklop 28.4.2016, 11:03
Цитата(LSD @ 27.4.2016,  12:42)

Редирект же идет на некий URL. Вот в обработчике этого URL и надо показать сообщение. Тут скорее вопрос как передать информацию об ошибке, тут есть варианты:
1. Через GET параметры.
2. Через сессию.


В названии темы написано JS - это JSP. Не полностью влезло название.
Можно попробовать через сессию это делать. Хотя GET запрос тоже не плохо, но коим образом? Если сообщение об ошибке это ответ фильтра. Делать редирект на url /index?status=incorrect так к примеру?

Автор: LSD 28.4.2016, 15:18
Цитата(Tsyklop @  28.4.2016,  12:03 Найти цитируемый пост)
В названии темы написано JS - это JSP. Не полностью влезло название.

Да хоть JSF. Это не мешает тебе сгенерировать страничку с JavaScript-ом который будет делать редирект через n секунд.


Цитата(Tsyklop @  28.4.2016,  12:03 Найти цитируемый пост)
Делать редирект на url /index?status=incorrect так к примеру?

Да. Если сообщение об ошибке стандартное, то просто тип этой ошибки передавать error=invalid_user. Если сообщение уникально, то передавать некий флаг что ошибка есть и дальше искать в сессии. Если нет сессии, то передавать некий ID по которому искать в "хранилище ошибок". Тут еще придется следить за этим хранилищем и чистить его периодически.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)