Redirect Wicket:重定向到共享资源

Redirect Wicket:重定向到共享资源,redirect,resources,wicket,Redirect,Resources,Wicket,我有一个wicket表单,提交时应该给用户一个可下载的文件。该文件由外部servlet(基于表单)生成,该servlet将生成的内容写入响应的输出流 通常,这可以使用表单提交上的getRequestCycle().setRequestTarget(新的RedirectRequestTarget(redirectUrl);来完成,其中redirectUrl将是带有参数的外部servlet的url 然而,redirectUrl显示在浏览器的地址栏中,这并不好,因为用户看到的是参数值,而他们不应该看到

我有一个wicket表单,提交时应该给用户一个可下载的文件。该文件由外部servlet(基于表单)生成,该servlet将生成的内容写入响应的输出流

通常,这可以使用表单提交上的
getRequestCycle().setRequestTarget(新的RedirectRequestTarget(redirectUrl);
来完成,其中
redirectUrl
将是带有参数的外部servlet的url

然而,
redirectUrl
显示在浏览器的地址栏中,这并不好,因为用户看到的是参数值,而他们不应该看到

为了克服这个问题,我实现了一个定制的
DynamicWebResource
,它以
byte[]
的形式获取servlet输出,并通过通常的wicket共享资源机制绑定到一个虚拟url

在提交表格时,我执行以下操作:

RequestParameters rps = new RequestParameters();
rps.setResourceKey(new ResourceReference("myResource").getSharedResourceKey());
getRequestCycle().setRequestTarget(new SharedResourceRequestTarget(rps));
然后依靠wicket的内部处理方式

调试时,我可以清楚地看到我的共享资源被正确地调用,外部servlet的响应被正确地生成、获取,然后用所有的头和内容写入当前响应,但之后什么也没有发生,没有错误,什么都没有

当我直接调用共享资源时,指定wicket已将其绑定到的url(如
http://localhost:8080/webAppRoot/wicket/myResource?param1=value
)-一切正常,文件格式良好,可下载


还有什么我必须做的吗?这很可能是愚蠢的事情,但我已经用头撞墙一天了…

问题解决了。浏览器无法处理响应的原因是表单是使用AJAX提交的。将提交类型更改为“纯”解决了问题。

你能帮我吗ost onSubmit()处理程序的相关部分?它已经在那里了,没有其他东西了。所有实际的业务都在我的共享资源中完成。