final FormPanel formPanel = new FormPanel(C.exportFormPanel());
formPanel.setAction(GWT.getModuleBaseURL() + C.csv());
final FlowPanel flowPanel = new FlowPanel();
formPanel.setWidget(flowPanel);
final Hidden fileNameHidden = new Hidden(C.chartData(), csvData); // csvData is the form data you want to flush.
flowPanel.add(fileNameHidden);
formPanel.setMethod(FormPanel.METHOD_POST);
RootLayoutPanel.get().add(formPanel);
formPanel.submit();
RootLayoutPanel.get().remove(formPanel);
Have a servlet to handle the form data in the server side:
In the doPost method, have the logic to flush the data
final String data = (String) request.getParameter(CHARTDATA);
response.setHeader(CACHE_CONTROL, NO_CACHE);
response.setHeader(PRAGMA, NO_CACHE);
response.setDateHeader(EXPIRES, 0);
response.setContentType(APPCSV);
response.setHeader(CONTENT_DISPOSITION, ATTACH_FILENAME);
// final String[] a = data.split("@");
PrintWriter writer = null;
try
{
writer = response.getWriter();
writer.append(data);
// for (String s : a)
// {
// writer.append(s);
// writer.append("\n");
// }
} finally
{
if (writer != null)
{
writer.flush();
writer.close();
}
}
This would export the data in the form of csv