Java gwt表单:请求发送并到达,但在gwt中没有响应
我一定错过了一些简单的东西,但我被卡住了。 根据firebug发送的请求,我在gwt中创建了一个FormPanel。 当我从firebug复制requestlink并在浏览器窗口中本机尝试时,该链接起作用。 是,客户端和服务器主机是相同的-->本地主机。 但答案并没有到达gwt。即使是客户端浏览器-firebug也不会显示任何结果 这是我的小表格:Java gwt表单:请求发送并到达,但在gwt中没有响应,java,gwt,formpanel,Java,Gwt,Formpanel,我一定错过了一些简单的东西,但我被卡住了。 根据firebug发送的请求,我在gwt中创建了一个FormPanel。 当我从firebug复制requestlink并在浏览器窗口中本机尝试时,该链接起作用。 是,客户端和服务器主机是相同的-->本地主机。 但答案并没有到达gwt。即使是客户端浏览器-firebug也不会显示任何结果 这是我的小表格: Button form = new Button ("SendForm", new ClickHandler() { @O
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(已经运行)更好。文件上传将在稍后进行,因此表单问题在任何情况下都需要答案
先谢谢你。
马库斯
编辑:好的,我也在Chromium、Konqueror和Opera上进行了测试-代码正常。只是firefox。如何让firefox运行起来?
我是eclipse和gwt的新手。。。也许是一些编译器选项?我自己发现并解决了这个问题:在执行form.submit之后,我隐藏了表单面板。 这是不允许的,正如javadoc所说: 在提交完成之前,不得分离FormPanel(即从其父级移除或从RootPanel断开连接)。否则,提交通知将失败
如果Firebug没有显示响应,请检查您的服务器。如果是,请检查其控制台是否存在可能的错误;还要检查来源:相同的服务器是不够的,您还需要相同的方案(http与https)和端口!最后,服务器必须使用
text/html
响应来响应submit complete event to fire。。。我可以检查服务器的哪些内容?答案是json字符串,这有问题吗?您是否使用内容类型:text/html
进行回复?萤火虫真的告诉你它没有看到回应吗?有趣的是:在铬中它能工作。。。是的,firebug说,它接收0字节。。。正在等待。。。我没有给出内容类型——它只是简单的json。。错了吗?我将在我的问题中发布一个示例答案。