Websphere Wicket+;WAS:调用url会导致重定向到错误的url,从而导致404

Websphere Wicket+;WAS:调用url会导致重定向到错误的url,从而导致404,websphere,wicket,wicket-1.6,websphere-liberty,Websphere,Wicket,Wicket 1.6,Websphere Liberty,使用WebSphereApplicationServer+Wicket 1.6 我的挂载URL有一些问题 当我调用类似于:localhost:9080/danesCooking/pies/meat的url时,我会在Chrome网络选项卡中看到以下内容: localhost:9080/danesCooking/pies/meat status code 302 localhost:9080/danesCooking/meat?2 status code 404 因此,似乎/馅饼/部分丢失了。当我

使用WebSphereApplicationServer+Wicket 1.6 我的挂载URL有一些问题

当我调用类似于:
localhost:9080/danesCooking/pies/meat的url时,我会在Chrome网络选项卡中看到以下内容:

localhost:9080/danesCooking/pies/meat status code 302
localhost:9080/danesCooking/meat?2 status code 404
因此,似乎/馅饼/部分丢失了。当我将应用程序部署到
Tomcat\JBoss\
时,不会发生这种行为

可能相关,pies本身不是挂载页面

我已经浏览了一些wicket问题\论坛,似乎大多数问题要么已解决\答案冲突\与相对URL有关(在1.5.x中修复)

是否有人经历过此问题,并且仍然记得如何解决此问题


使用了WAS*版本:7和8.5*
liberty。

这个问题实际上在这里概述;

我在Wicket 6.9.1中对该问题的决议是:

public class MyApplication extends WebApplication {

    @Override
    public Class<? extends WebPage> getHomePage() {
        return MyHomePage.class;
    }

    /* *********************************************** */
    // Resolve Websphere Relative URL "sendRedirect" Bug

    @Override
    protected WebResponse newWebResponse(WebRequest webRequest, HttpServletResponse httpServletResponse) {
        return new FixedServletWebResponse((ServletWebRequest) webRequest, httpServletResponse);
    }

    /**
     * Websphere incorrectly handles relative redirect pages when "HttpServletResponse.sendRedirect(url)" is called.
     * 
     * This small fix ensures that Websphere is only ever provided with absolute URLs so that this issue never occurs.
     */
    private static class FixedServletWebResponse extends ServletWebResponse {
        private final ServletWebRequest webRequest;

        protected FixedServletWebResponse(ServletWebRequest webRequest, HttpServletResponse httpServletResponse) {
            super(webRequest, httpServletResponse);
            this.webRequest = webRequest;
        }

        @Override
        public String encodeRedirectURL(CharSequence url) {
            Url relativeUrl = Url.parse(url);
            return new UrlRenderer(webRequest).renderFullUrl(relativeUrl);
        }
    }

    /* *********************************************** */
}
公共类MyApplication扩展了WebApplication{
@凌驾

公共类您还可以使用第5.2.4章中描述的匿名类来解决这个问题。(使用WLP 8.5.5.3和Wicket 6.8.0进行测试)

WebApplication
类中重写以下方法:

    @Override
    protected WebResponse newWebResponse(final WebRequest webRequest, final
    HttpServletResponse httpServletResponse)
    {
        return new ServletWebResponse((ServletWebRequest) webRequest,
                httpServletResponse)
        {
            @Override
            public String encodeRedirectURL(final CharSequence relativeURL)
            {
                return new UrlRenderer(webRequest).renderFullUrl(Url.parse(relativeURL));
            }
        };
    }
更新
其他解决方案,而不是代码更改,是在webcontainer中设置以下属性(适用于8.5.5.3):


<webContainer com.ibm.ws.webcontainer.redirectwithpathinfo="true" />