У меня есть сервлет в приложение Thats GWT создает PDF-файл с данными, приведенными с запросом на пост и отправляет responst назад:GWT: Показаны PDF создан как ответ POST
public void service(HttpServletRequest request, HttpServletResponse response) {
try {
String text = request.getParameter("text");
if (text == null || text.trim().length() == 0) {
text = "no data";
}
//PDF Creation with iText
Document document = new Document();
ByteArrayOutputStream b = new ByteArrayOutputStream();
PdfWriter.getInstance(document, b);
document.open();
document.add(new Paragraph(text));
document.close();
response.setHeader("Expires", "0");
response.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
response.setContentLength(b.size());
OutputStream os = response.getOutputStream();
b.writeTo(os);
os.flush();
os.close();
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
Я хочу, чтобы показать созданный PDF для пользователя. Я получил это далеко на клиенте:
final RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
GWT.getModuleBaseURL() + "PdfServlet");
rb.setHeader("Content-type", "application/x-www-form-urlencoded");
StringBuffer postData = new StringBuffer();
postData.append(URL.encode("text")).append("=")
.append(URL.encode(Text));
rb.setRequestData(postData.toString());
rb.setCallback(new RequestCallback() {
@Override
public void onResponseReceived(Request request,
Response response) {
if (200 == response.getStatusCode()) {
//What to do here?
} else {
//TODO:Something
}
}
@Override
public void onError(Request request, Throwable exception) {
/TODO:...
}
});
try {
rb.send();
} catch (RequestException e) {
e.printStackTrace();
}
Так что мой вопрос: Как показать это PDF пользователю? Все, что я managaged сделать, это показать PDF с «нет данных» в нем ..
Спасибо Вам помочь :)
Здравствуйте, спасибо за ответ :) Я случайно отправил код с некоторыми ошибками;) Я использую метод Post - так что я могу Не используйте URL-адрес для передачи данных на сервер. Вы знаете способ показать ответ на сообщение в качестве PDF-документа? – Morious
Ну, вы можете использовать 'com.google.gwt.user.client.ui.FormPanel', который отправляет ваш запрос, используя метод POST. Вы можете поймать результат с помощью addSubmitCompleteHandler. Однако клиент ожидает результат строки, а не PDF. Вы можете сохранить сервер PDF-сервера и вернуть ему уникальный идентификатор, который затем использует GWT-клиент в регулярном запросе GET: someIFrame.setUrl (http://acme.com/servlet?id=12345) –
Allright .. Я пойду с GET, как вы уже упоминали раньше. :) Это работает так. – Morious