2013-03-23 51 views
0

我必须错过简单的东西,但我卡住了。 我在gwt中创建了一个FormPanel,根据萤火虫发送请求。 链接工作,因为我从firebug复制请求链接,并在浏览器窗口中本地尝试它。 是的,客户端和服务器主机是相同的 - > localhost。 但答案并没有达到gwt。甚至没有客户端浏览器 - 萤火虫显示没有结果。gwt形式:请求发送并到达,但在gwt没有响应

这是我的一点形式:

Button form = new Button ("SendForm", new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      logger.log(Level.FINER, "Creating SubmitForm..."); 

      TextBox cmd = new TextBox(); 
      cmd.setName("cmd"); 
      cmd.setText("GetMenuitemList"); 

      Button sendbutton = new Button("Senden"); 
      logger.log(Level.FINEST, "Creating grid..."); 
      Grid grid = new Grid(1, 2); 
      grid.setWidget(0, 0, new Label("Command")); 
      grid.setWidget(0, 1, cmd); 

      VerticalPanel vPan = new VerticalPanel(); 
      //vPan.add(grid); 
      vPan.add(sendbutton); 

      logger.log(Level.FINEST, "Creating FormPanel..."); 
      final FormPanel formPan = new FormPanel(); 
      formPan.setMethod(FormPanel.METHOD_POST); 
      formPan.setAction(RequestHelper.getLink("Menu.php")); 

      logger.log(Level.FINEST, "Binding Send button..."); 
      logger.log(Level.FINEST, "Binding SubmitHandler..."); 
      formPan.addSubmitHandler(new SubmitHandler() { 

       @Override 
       public void onSubmit(SubmitEvent event) { 
        OptionPane.showMessageDialog("Form submit", event.toDebugString(), MessageType.INFO, true); 
       } 
      }); 

      logger.log(Level.FINEST, "Binding SubmitCompleteHandler..."); 
      formPan.addSubmitCompleteHandler(new SubmitCompleteHandler() { 

       @Override 
       public void onSubmitComplete(SubmitCompleteEvent event) { 
        OptionPane.showMessageDialog("Form SubmitComplete", event.toDebugString(), MessageType.INFO, true); 
       } 
      }); 

      logger.log(Level.FINEST, "Adding grid to formpan..."); 
      formPan.add(grid); 
      formPan.add(vPan); 

      logger.log(Level.FINEST, "Creating DialogBox..."); 
      final DialogBox box = OptionPane.createClosableBox("TestForm", true); 

      sendbutton.addClickHandler(new ClickHandler() { 

       @Override 
       public void onClick(ClickEvent event) { 
        formPan.submit(); 
        box.hide(); 
       } 
      }); 

      box.add(formPan); 
      box.center(); 
     } 
    }); 

预期的答案是这样的:

{"sessionid":"6dbqibo25e0bn46fldqh37psj5","data":[{"title":"Start","Controller":"Start","Action":"Index","tooltip":"Startseite, Begr\u00fc\u00dfung","prefetch":"1"},{"title":"Register","Controller":"Person","Action":"Index","tooltip":"Neue Benutzer registrieren","prefetch":"0"},{"title":"Daten","Controller":"Contact","Action":"Index","tooltip":"Die eigenen Daten bearbeiten","prefetch":"1"},{"title":"Teilnehmerlisten","Controller":"Lists","Action":"Index","tooltip":"Listen der registrierten Benutzer","prefetch":"0"},{"title":"Suche","Controller":"Search","Action":"Index","tooltip":"Namenssuche nach Benutzer mit Kontaktm\u00f6glichkeit","prefetch":"1"},{"title":"Kalender","Controller":"Calendar","Action":"Index","tooltip":"Termine","prefetch":"1"},{"title":"Newsletter","Controller":"Newsletter","Action":"Index","tooltip":"Verschicken von Newslettern","prefetch":"1"},{"title":"Wettk\u00e4mpfer","Controller":"Competitor","Action":"Index","tooltip":"Zugriff auf Wettk\u00e4mpfer","prefetch":"1"},{"title":"Upload","Controller":"Upload","Action":"Index","tooltip":"Bilder, Videos o.\u00e4. hochladen","prefetch":"0"},{"title":"Administration","Controller":"Admin","Action":"Index","tooltip":"Datenbankfunktionen und Benutzerrechte","prefetch":"1"}]} 

那么,到底是怎么回事错在这里?

顺便说一句,我将使用这种技术的登录表单。我读过,它更好的做法是通过RequestBuilder(已经工作)。文件上传会晚一些,所以表单问题在任何情况下都需要一个答案...

在此先感谢您。 Markus

编辑:好的,我在Chromium,Konqueror和Opera上测试过 - 代码工作。这只是Firefox。想法让它与火狐? 我是eclipse和gwt中的总newby ...也许是一些编译器选项?

+2

如果Firebug不显示响应,请检查您的服务器。如果确实如此,请检查控制台是否有可能的错误;也检查起源:同一台服务器是不够的,你也需要相同的方案(http与https)和端口!最后,服务器**必须**回答“text/html”响应,以便提交完成事件触发。 – 2013-03-23 10:34:36

+0

Webadress:HTTP://本地主机/〜马库斯/ gwt2/ 请求:HTTP://localhost/~markus/gwt2/php/Menu.php CMD = GetMenuitemList 事业的控制台上没有任何错误... 我可以检查服务器的哪些内容? 答案是json字符串,这是一个问题吗? – 2013-03-23 10:44:28

+0

你是否用'Content-Type:text/html'回复?萤火虫真的告诉你它没有看到回应? – 2013-03-23 10:59:11

回答

0

我发现并自己解决了这个问题:执行form.submit后,我隐藏了窗体Panel。 即不允许作为javadoc的说:

的FormPanel中不能分离的(即从它的父除去或从RootPanel否则断开)直到提交完成。否则,提交通知将失败。

相关问题