Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 链接URL(带有JSSessionID)在URL重写期间被截断_Java_Google App Engine_Wicket_Wicket 1.5 - Fatal编程技术网

Java 链接URL(带有JSSessionID)在URL重写期间被截断

Java 链接URL(带有JSSessionID)在URL重写期间被截断,java,google-app-engine,wicket,wicket-1.5,Java,Google App Engine,Wicket,Wicket 1.5,用户第一次通过访问我的应用程序主页 http://[My domain] 结果生成表单的URL http://[My domain]/main/PageHome;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0 http://[My domain]/main/..;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0-1.ILinkListener-lnkAbout 那很好,但是我主页上的每个链接都有表单的URL http://[My domain]

用户第一次通过访问我的应用程序主页

http://[My domain]
结果生成表单的URL

http://[My domain]/main/PageHome;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0
http://[My domain]/main/..;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0-1.ILinkListener-lnkAbout
那很好,但是我主页上的每个链接都有表单的URL

http://[My domain]/main/PageHome;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0
http://[My domain]/main/..;jsessionid=v_qqIGVQlKBbkNSOcHkAQw?0-1.ILinkListener-lnkAbout
(此处复制的特定“关于我们”链接URL的长度为102个字符)。这些URL无效,因为存在两个点而不是
PageHome
,以正确完成路径

是否有任何方法可以配置GAE/J以抑制此URL缩写,或者此操作是web框架的范围

作为一个(相当糟糕的)解决方案,我已经在我的链接的URL中编码了JSSessionID的禁止,并且正在对应用程序进行编码,以便在会话cookie被禁用时发出警告。但如果有人给我指点,我会很感激的

伊恩·马歇尔

我的操作环境 Web应用服务器:GAE/J 1.6.1.1(不是开发服务器)(我知道:它不是最新版本)
Web框架:ApacheWicket 1.5.3
产生上述效果的Web浏览器:
·Mozilla Firefox 10.0.1
·Microsoft Internet Explorer 8.0.6001.18702

·正如我在运行谷歌安卓2.3.5的HTC Wildfire S上发现的那样,一些重现问题的示例代码会很有帮助。

我通过绕过它解决了问题

我的所有网页都是从PageBase类派生的,而PageBase类又是从Wicket的网页派生的

·我通过停止覆盖我的Web应用程序来禁用自动删除JSessionID

  public String ServletWebResponse.encodeURL(CharSequence url)
·在我的PageBase构造函数中,我确定是否检测到(会话)Cookie被存储

·如果没有,我会提出一项建议

  org.apache.wicket.RestartResponseException(final Class<C> pageClass)
org.apache.wicket.RestartResponseException(最终类pageClass)

要显示我的页面,请禁用。这会中断包含“.”字符的无效URL的“未找到”错误,我以前遇到过这种情况。

我也遇到过同样的问题。通过使用以下内容覆盖我的应用程序类中的newWebRequest修复了此问题:

protected WebRequest newWebRequest(HttpServletRequest servletRequest,
        String filterPath) {
    WebRequest webRequest = super.newWebRequest(servletRequest, filterPath);
    return new ServletWebRequest(servletRequest, filterPath, webRequest.getUrl().canonical());
}

在我看来,不需要特殊的示例代码。访问运行在GAE/J中的Wicket网页的简单操作为我生成了上述URL(对于我列出的框架和环境的版本)。任何现有的Wicket web应用程序(包括我的框架和环境版本)如果显示从web页面派生的页面,则应该显示我现在获得的内容。还有一个由Martin Grigorov提供的补丁