我在拦截和更改请求 url 以将其链接到正确的 URL 时遇到问题。我正在使用条纹框架,并希望将用户重定向到正确的子域。例如。如果用户属于 abc.sitename.com 并且请求来自 xyz.sitename.com 他应该被重定向到 abc.sitename.com 所有请求发布。对于 getparameter,我通过简单地获取请求 url 和请求查询并在生命周期解析执行之前从自定义拦截类重定向用户来完成此操作。但是所有 post 参数都被刷新,因为它是重定向的。另一种解决方案是转发解决方案,但它可以将用户置于上下文中,我需要将其覆盖为:
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 应该在解析执行之前更改,因为它没有用,我已经尝试过了。有什么方法可以在 HTTPServeletRequest 中设置请求 url。
我也尝试过在 ActionBeanResolution 期间进行拦截,这是进行此类活动的最佳场所。我的主要问题是 POST 参数。我无法重定向(因为它们被刷新或者如果使用包含 reuest 参数,它们在 URL 中可见)。上下文中的前向解决方案。如果有办法将其转发到新 URL,它将完成这项工作。
提前致谢。