У меня возникла проблема с перехватом и изменением URL-адреса запроса, чтобы связать его с правильным URL-адресом. Я использую рамки рамки и хочу перенаправить пользователя на их правильный субдомен. Для примера. если пользователь принадлежит abc.sitename.com, а запрос отправлен с сайта xyz.sitename.com, он должен быть перенаправлен на abc.sitename.com со всем сообщением о запросе. Для getparameter я сделал это, просто получив URL-адрес запроса и запросив запрос и перенаправляя пользователя из пользовательского класса перехвата до выполнения разрешения для жизненного цикла. Но все параметры post очищаются, поскольку они перенаправляются. Другим решением было направить решение, но это может занять пользователь в контексте, и мне нужно переопределить его как:Перехват и изменение URL-адреса запроса Использование структуры Stripes
resolution = new OnwardResolution<ForwardResolution>(reponseUrl) {
@Override
public void execute(HttpServletRequest request,
HttpServletResponse response) throws Exception {
request = ctx.getRequest();
response = ctx.getResponse();
String path = reponseUrl; //getUrl(request.getLocale());
// Set event name as a request attribute
String oldEvent = (String) request.getAttribute(StripesConstants.REQ_ATTR_EVENT_NAME);
//request.setAttribute(StripesConstants.REQ_ATTR_EVENT_NAME, event);
log.info("check: {}", path);
// Revert event name to its original value
request.setAttribute(StripesConstants.REQ_ATTR_EVENT_NAME, oldEvent);
// Figure out if we're inside an include, and use an include instead of a forward
RequestDispatcher dispatcher = request.getRequestDispatcher(path);
//request.getRequestDispatcher(path).forward(request, response);
dispatcher.forward(request, response);
}
};
Но зовут в прикладном контексте пути, в то время как он должен вызвать полный URL. Другое решение. Если я использую разрешение переадресации и задаю параметр includerequest, true выполнит задание, но поместит весь параметр запроса в url, что делает его неприемлемым.
Запрос url должен быть изменен до выполнения разрешения, так как после него это будет бесполезно, я пробовал его. есть ли способ установить URL запроса в HTTPServeletRequest.
Я также пытался перехватить во время ActionBeanResolution, это лучшее место для такой деятельности. Моя основная проблема - параметры POST. Я не могу перенаправить (поскольку они очищаются, или если параметр include включает параметр reuest, они отображаются в URL-адресе). Форвардное разрешение вперед в контексте. Если есть способ переслать его на новый URL, он выполнит эту работу.
Заранее спасибо.
Хорошо, но мы можем отправить запрос с сообщением. Я просто не могу правильно использовать метод RequestDispatcher forward в рамке. Когда я устанавливаю «http: //xyz.sitename.com», он добавляет «/» к нему, создавая «/http:/xyz.sitename.com». вы столкнулись с такой проблемой .. и спасибо за ответ .. –
Переадресация может пересылаться только на ресурс того же приложения, на том же сервере. Это интра-приложение. И это абсолютно прозрачно для браузера, который останется на том же URL-адресе. Это не имеет никакого отношения к перенаправлению. –
Есть ли способ установить URL-адрес запроса в HTTPServletRequest .. я выяснил это. Если это возможно, это устранит проблему. –