Wicket正在更改requestURL

时间:2011-09-14 11:20:10

标签: java wicket

我有一个wicket应用程序,可以部署在不同的环境中。其中一个环境是https代理后面的服务器(让我们称之为S)(我们称之为P),因此应用程序上的页面可以访问

https://P:443/path/mountedPackage/Page?params=values

在wicket 1.4中一切正常但是随着向wicket 1.5的迁移,请求URL被更改为

http://P:443/path/mountedPackage/Page?params=values

(https被http替换)导致“400 Bad Request”错误。我不知道为什么会这样,但它会破坏我对应用程序的外部链接。

注意:在提交表单并调用方法setResponsePage(Page.class)之前我遇到了同样的问题,我通过设置不同的RequestTarget并在对应时手动添加“https”而不是“http”来解决它:

on wicket 1.4

component.getRequestCycle().setRequestTarget
      (new RedirectRequestTarget("newURLWithPropperHttps"));

和wicket 1.5

component.getRequestCycle().scheduleRequestHandlerAfterCurrent(new 
    RedirectRequestHandler("newURLWithPropperHttps"));

但是现在我没有打电话给任何setResponsePage()或类似的事情,这是在从外面跟踪正常链接时发生的。

有任何帮助吗?可以使用所示的相同解决方案,但我不知道在哪里实现它(我已经尝试了get()的方法IRequestCycleProvider,但这导致我出现了anohter错误)

2 个答案:

答案 0 :(得分:1)

我通过编写自己的IRequestMapper来解决问题,mapHandler()的作用类似于默认值,但是方法final IRequestMapper o=getRootRequestMapper(); setRootRequestMapper(new IRequestMapper() { [...] @Override public Url mapHandler(IRequestHandler r) { Url u=o.mapHandler(r); if (condition) u.setProtocol("https"); return u; } }); 将协议设置为https(如果必须的话)。

{{1}}

答案 1 :(得分:0)