我有一个检票窗体,提交时应该给用户一个文件下载。该文件由外部servlet(基于表单)生成,该servlet将生成的内容写入响应的输出流。Wicket:重定向到共享资源
通常这可以使用getRequestCycle().setRequestTarget(new RedirectRequestTarget(redirectUrl);
在表单提交上完成,其中redirectUrl
将是带参数的外部servlet的url。
然而,redirectUrl
显示在浏览器的地址栏,这是不好的,因为用户看到的参数值,他们不应该。
为了解决这个问题,我实现了一个自定义DynamicWebResource
,它将servlet输出作为byte[]
取回,并通过常规的wicket共享资源机制绑定到虚拟url。
的形式提交我做到以下几点:
RequestParameters rps = new RequestParameters();
rps.setResourceKey(new ResourceReference("myResource").getSharedResourceKey());
getRequestCycle().setRequestTarget(new SharedResourceRequestTarget(rps));
然后靠检票口的内部处理方式有关。
调试时,我可以清楚地看到我的共享资源被正确调用,外部servlet的响应正确生成,提取,然后写入当前响应与所有标题和东西,但没有任何反应后,没有错误,只是没有。
当我直接调用我的共享资源指定url wicket已将其绑定到(如http://localhost:8080/webAppRoot/wicket/myResource?param1=value
) - 一切正常,文件格式良好并可下载。
有什么额外的我必须做的?这很可能是一些愚蠢的事情,但我一直在殴打我的头再次墙壁已经有一天了......
你能发布onSubmit()处理程序的相关部分吗? – bert 2010-12-22 06:36:31