我有一個GWT應用這就是一個servlet創建與發佈請求中給出的數據的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 2012-03-24 15:50:56
那麼,您可以使用'com.google.gwt.user.client.ui.FormPanel'使用POST方法發佈您的請求。您可以使用addSubmitCompleteHandler捕獲結果。但是,客戶端需要一個字符串結果而不是PDF。您可以保存PDF服務器端並返回一個唯一的ID,然後GWT客戶端在常規的GET請求中使用它:someIFrame.setUrl(http://acme.com/servlet?id=12345) – 2012-03-24 16:05:53
Allright ..我會和GET一起去,然後像你之前提到的那樣。 :)它的工作方式。 – Morious 2012-03-26 07:54:00