【问题标题】:GWT Servlet not getting called from GWT Form Panel integrated in web application没有从集成在 Web 应用程序中的 GWT 表单面板调用 GWT Servlet
【发布时间】:2015-05-27 05:20:55
【问题描述】:

我有一个 GWT 应用程序,其中有一个带有文件上传的表单面板。然后有一个 servlet 用于处理上传的文件。整个应用程序集成在一个 struts Web 应用程序中。

下面是sn-p的代码:

final FormPanel form = new FormPanel();
form.setAction(GWT.getModuleBaseURL()+"upload");
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
VerticalPanel formPanel = new VerticalPanel();
form.setWidget(formPanel);

Label lblSelectFile = new Label();
lblSelectFile.setText("Select cient_secret.json file: ");
formPanel.add(lblSelectFile);

FileUpload fileUpload = new FileUpload();
fileUpload.setName("fileUpload");
formPanel.add(fileUpload);

Button upload = new Button("Upload");
upload.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            form.submit();
        }
    });

formPanel.add(upload);

form.addSubmitHandler(new FormPanel.SubmitHandler() {
    public void onSubmit(SubmitEvent event) {
          if (fileUpload.getName().length() == 0) {
                    Window.alert("The file must not be empty");
                        event.cancel();
          }
      }
    });

form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
 public void onSubmitComplete(SubmitCompleteEvent event) {
           Window.alert(event.getResults());
 }

});

web.xml

<servlet>
  <servlet-name>uploadServlet</servlet-name>
  <servlet-class>
      com.test.FileUploadServlet
  </servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>uploadServlet</servlet-name>
 <url-pattern>*/upload</url-pattern>
</servlet-mapping>

现在的问题是没有从表单面板调用这个 servlet,我得到的是 HTTP 状态 404。

我做错了什么???

【问题讨论】:

  • 您是否遇到任何错误?请同时粘贴控制台日志。
  • 在浏览器的生成页面中查看页面的来源并告诉我们表单操作设置为什么?
  • 我认为 GWT 可能会在 URL 末尾添加一些内容,在这种情况下您的 URL 模式不匹配。尝试将其更改为 */upload**/upload/*
  • GWT.getModuleBaseURL() 可能不会返回正确的 url,请尝试改用 GWT.getHostPageBaseURL()。有关详细信息,请参阅此线程:stackoverflow.com/questions/9286204/… 另外,如果这没有帮助,请尝试查看浏览器调试控制台并查看正在发送的请求。
  • 控制台没有错误,只是在 Window.alert(event.getResults());它显示 servlet 的 404 错误消息。

标签: java servlets gwt


【解决方案1】:

AFAICT,*/upload 不是有效的 servlet-mapping url-pattern。 * 只能是“扩展”的前缀(如*.jsp)。您必须使用moduleName/upload,或者只使用upload,然后将getModuleBaseURL 更改为getHostPageBaseURL

【讨论】:

  • 我按照你的建议修改了代码,但我仍然遇到同样的 404 servlet 问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多