【问题标题】:Unable to get GWT FormPanel to work properly无法让 GWT FormPanel 正常工作
【发布时间】:2013-03-29 14:49:26
【问题描述】:

我已经尝试了几天了,但没有成功。

final FormPanel form = new FormPanel(new NamedFrame("test"));
form.setAction("/designer");
form.setMethod(FormPanel.METHOD_POST);
VerticalPanel panel = new VerticalPanel();
form.setWidget(panel);

final TextBox tb = new TextBox();
tb.setName("style");
panel.add(tb);
panel.add(new Button("Submit", new ClickHandler() {
public void onClick(ClickEvent event) {
   Window.alert("submitting to:" + form.getTarget());
   form.submit();
    }
}));
form.addSubmitCompleteHandler(new SubmitCompleteHandler() {
public void onSubmitComplete(SubmitCompleteEvent event) {
  Window.alert("complete");
  Window.alert(event.getResults());
}
});

在托管模式下,“提交至”警报触发后没有任何反应。在 Chrome 中,表单会在单独的选项卡中加载,但 POST 本身是空的。同样,在 Firefox 和 IE 中,警报之后没有任何反应。有什么想法吗?

我在 /designer 设置了一个 servlet,它可以从任何页面请求中输出请求标头和正文。我可以从一个普通的 HTML 页面点击这个 servlet 并查看预期的输出。从 GWT 中,不会出现任何请求(Chrome 除外,其中会显示请求,但正文为空)。

【问题讨论】:

    标签: java gwt


    【解决方案1】:

    尝试将form.setWidget(panel); 移动到底部。

    另外,请确保将表单添加到容器面板,即add(form);,而不是垂直面板。

    【讨论】:

      【解决方案2】:

      您的代码与FormPanel API 上的示例几乎相同,因此我必须假设逻辑是正确的。

      “/designer”中是否存在 servlet? SubmitCompleteHandler 的文档指出,只有在提交成功时才会触发 onSubmitComplete 事件。

      这是一个包含一些示例代码的线程,用于编写处理表单帖子的 servlet:http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/77e68fcb9097debc

      【讨论】:

        【解决方案3】:

        我知道这篇文章已有 3 年的历史了,但是为了像我这样登陆这里的任何谷歌用户, 这是触发 OnSubmitCompleteEvent 的条件:

        1. 使用无参数构造函数来构建表单:FormPanel f = new 窗体面板();。正如Javadoc中提到的:

          创建一个新的 FormPanel。使用此构造函数创建时,它将 被提交到一个隐藏的

          所以它是唯一触发表单提交完成的 成功时的事件。

        2. 确保被调用的操作返回响应 content-type:"text/html"

        如果您仍需要使用外部 NamedFrame,一个解决方案是观察框架上的 LoadEvent。它在框架开始加载时被触发,这意味着来自服务器的响应到达: ...

        NamedFrame frame = new NamedFrame("test");
        frame.addLoadHandler(new LoadHandler()
        {
            void onLoad(LoadEvent event)
            {
                //your code here
            }
        });
        

        希望对你有帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-05
          • 2017-11-06
          • 2011-09-06
          • 1970-01-01
          • 2023-03-10
          • 2020-10-16
          相关资源
          最近更新 更多