Wicket's scheduleRequestHandlerAfterCurrent() example
Posted by ozizka in Ondrej Zizka's Blog on Jan 8, 2013 9:36:51 PMRequestCycle#scheduleRequestHandlerAfterCurrent() is used to hand over the request to different handler.
For example, if you figure out in some ajax-handling code that you want to serve the user a file.
Here's a link to provide an excel file, spotted at http://apache-wicket.1842946.n4.nabble.com/Export-a-file-with-wicket-1-5-3-td4110367.html :
final Link lnkExport = new Link("export") {
public void onClick() {
getRequestCycle().scheduleRequestHandlerAfterCurrent(new IRequestHandler() {
@Override
public void detach(IRequestCycle requestCycle) {
}
@Override
public void respond(IRequestCycle requestCycle) {
try {
JxlExportOrderList jxlExportOrderList = new JxlExportOrderList(dataProvider.getOrderIds(), coOrderService);
String fileName = String.format("118114life_%s.xls", new Object[]{DateUtils.format(Calendar.getInstance().getTime(), "yyMMddHHmm")});
HttpServletResponse httpResponse = (HttpServletResponse)requestCycle.getResponse().getContainerResponse();
httpResponse.setContentType( "application/vnd.ms-excel" );
httpResponse.setHeader("Content-disposition", "attachment; filename=" + fileName );
jxlExportOrderList.exportToExcel(httpResponse.getOutputStream());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});
}
};
add(lnkExport);
}
Comments