【发布时间】:2011-09-01 06:13:27
【问题描述】:
我有一个简单的 GWT 应用程序,它由一个包含单个 FileUpload 字段的 FormPanel 组成。此表单的操作是将其发送到 GWT.getModuleBaseURL() + "process",web.xml 反过来告诉 GWT 是 FileProcessServlet。
FileProcessServlet 是我创建的一个类,它扩展 HttpServlet 并覆盖 doPost(HttpServletRequest req, HttpServletResponse resp) 以解析上传的文件并使用 Base64Utils 将其转换为 Base64 字符串。现在,我想向客户端传递一个字符串,该字符串是刚刚发送的文件的 Base64 编码。
对于我的一生,我只是不知道如何做到这一点。 Communicating with the Server 上的 GWT 文档没有说明从 FormPanel.submit() 接收信息的任何内容。与 GWT RPC 一样,没有与此类请求关联的回调函数。同时,我需要使用一个servlet,因为我要解析一个文件,而这不能由客户端完成。有什么建议么?
~~~~
PS:一种选择是我可以使用 java.io 的 PrintWriter 从 servlet 直接写入 html 页面(正如this 所建议的那样)。这可能会提供一种解决方案,我将 Base64 字符串存储在具有特殊 ID 的 div 中,然后使用 DOM 在客户端获取此内容。但是,我还没有让 PrintWriter 与我合作。每当我使用它,使用不同的内容类型和字符编码时,我仍然看不到页面上打印任何内容。我目前试图打印出来的是:
String base64 = Base64Utils.toBase64(file);
resp.setContentType("text/html; charset=UTF-8");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
out.print(base64);
out.flush(); out.close();
但没有任何结果。调试器已确认字符串 base64 在倒数第二行不为空也不为空。在此相关方面的任何帮助也将不胜感激。尽管如此,我真诚地希望有更好的方法。
【问题讨论】:
-
如何将 servlet 集成到您的页面中?
-
我不确定我是否理解您的问题。