Wicket在另一个请求之后触发请求
Wicket trigger request after another request
我尽力描述我的情况。我的wicket站点包含列表wicket组件,其中每个列表元素都有另一个列表。最低级别列表中的每个元素都有ajax wicket链接来下载一些文件。所有这些都很好。我习惯了这种AjaxBehavior。方法startDownload在链接onClick方法中调用此行为。
public void startDownload(AjaxRequestTarget target) {
target.appendJavaScript("window.location.href='" + getCallbackUrl() +"'");
}
这种行为的请求方法是:
@Override
public void onRequest() {
IRequestHandler fileTarget = new IRequestHandler() {
@Override
public void respond(IRequestCycle requestCycle) {
if (null != file) {
try {
FileInputStream inputStream = new FileInputStream(file);
WebResponse resp = (WebResponse) requestCycle.getResponse();
resp.setAttachmentHeader(fileName);
String contentType = FileUtils.getFileType(fileName);
if (contentType != null) {
resp.setContentType(contentType);
}
resp.setHeader("Pragma", "anytextexeptno-cache");
resp.setHeader("Cache-Control", "max-age=0");
Streams.copy(inputStream, requestCycle.getResponse().getOutputStream());
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
}
现在我需要在下载文件操作后重新加载模型并刷新页面中的一些组件。在代码调用startDownload方法后,我尝试在onclick方法中将整个页面添加到AjaxRequestTarget中。重新加载页面工作正常,但包含要下载的文件的窗口不会显示。
我想我必须在另一个单独的请求中重新加载页面(也许我错了?),因为在这个请求中我调用了"window.location.href=…",但我不知道如何强制第二个请求来重新加载页面。
有人知道我做错了什么吗?我该如何解决我的问题?
似乎你需要这样的东西:
https://cwiki.apache.org/confluence/display/WICKET/AJAX+更新+和+文件+下载+在+一个+吹
我的实现似乎与cwiki.apache.org网站上的类似。在onRequest方法中,我使用了getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler),尽管如此,它还是不起作用。
原因可能是组件,该组件导致请求被添加到目标(因为我添加到目标整个页面,而组件-ajaxLink在本例中是该页面的子级)
相关文章:
- Wicket在另一个请求之后触发请求
- Nodejs请求之后是请求同步问题
- HTTP_STREAM_PARSER_READ_HEADERS之后取消AJAX请求
- Ajax在maxlength之后请求keyup-maxlength后出现数据错误
- 如何在 angularjs 中的简单获取请求 json 之后添加事件侦听器
- 在javascript http post请求之后处理不同的php响应
- Javascript的window.open函数在ajax请求之后避免任何弹出窗口阻止程序
- php中onclick之后的mySQL请求
- 等待React Render,直到请求之后
- "未捕获的层次结构请求错误:createTextNode之后的新行标记
- 如何使用$.get()请求在多维for循环之后触发事件
- 如何在“脚本”之后访问已声明的变量数据类型AJAX请求
- 可靠的方式来检查互联网连接或AJAX请求之后
- 第二个JSP页面在AJAX POST请求之后没有被加载
- 在AJAX请求之后将Json存储在全局变量中
- 如何在onsubmit之前或之后触发AJAX请求
- 在ajax请求之后,AngularJs不会加载我的菜单
- Ajax请求在其他请求(.NET+jQuery)的成功结果之后
- 在模板中的Ajax请求之后加载数据
- 如何在一个很长的HTTP请求之后更新DOM,而不用在Angular中使用$scope