我刚参加了一个GWT项目。
我们现在的目标是通过登录创建更多页面。
我想将这些页面添加为简单的HTML并使用现有的GWT后端。
这可能吗?
当我在当前登录页面中查看网络时,我看到GWT使用了一个与竖线连接的长字符串,如:
7|0|11|http://15.165.128.219:8099/welcome/|B080515AD1EBC13C065F38E72385F941|com.company.AdminService|login|com.company.LoginDetails/94248548|java.util.HashSet/3273092938|java.lang.String/2004016611|myusername|mypassword|1|2|3|4|1|5|5|P__________|6|1|7|8|6|1|7|9|10|11|
我知道JQuery Ajax
$.ajax( { username : "username" , password : "password" }
GWT响应如下:
//OK['C',[],0,7]
我如何解决两种技术的桥接问题?使用GWT分派JQuery Ajax请求和回复的正确方法是什么?
答案 0 :(得分:3)
GWT的使用是将其用作前端技术。如果您想要删除该功能,那么您可能根本不需要GWT并使用后端技术。
答案 1 :(得分:2)
GWT有三个“层”client, shared and server
。
在服务器端,您可以使用适用于Java and database.
GWT有自己的机制,用于浏览器和服务器之间的远程过程调用。
这与vanilla Java RMI
非常相似 - 定义服务器函数的接口和实现,并生成代码以允许客户端代码调用它们,就好像它们是简单的本地方法一样。
这消除了为请求和响应定义XML or JSON
数据格式的所有工作。只需为服务器编写函数代码,从客户端代码调用函数(仍然是Java),并为您完成所有marshalling, unmarshalling, network communication
等。
因此,如果没有客户端,您无法单独使用RPC功能,并且使用它不是一个很好的实践。
My suggetion is to go for Pure `AJAX`.
答案 2 :(得分:2)
通过javascript将ajax请求分派给GWT RPC调用的正确方法是将调用转换为javascript api。 Gwt有一个库让这很容易 - https://code.google.com/p/gwt-exporter/
它允许您在GWT的java代码中注释方法(比如,一个包含调用某些GWT RPC的方法的类),并使其在一个好名字下可用于javascript。
如,
package com.example;
@Export
public static class YourClass implements Exportable {
private YourServiceAsync service = (YourServiceAsync) Gwt.create(YourService.class);
public void foo() {
//you can make RPC calls here via the normal GWT way
service.doService("foo", new YourAsyncCallback());
}
public static String bar(){
return "bar";
}
}
然后在javascript中,您可以调用这些方法
// create an instance of YourClass
var a = new com.example.YourClass ()
// call an instance method
a.foo();
// call a static method
com.example.YourClass .bar();
还有更多高级用法(比如在javascript中传递闭包) - 检查该项目的doco / wiki。
答案 3 :(得分:1)
当你编写自己的代码来发出请求并解析来自GWT-RPC的响应时,你已经重写了相当多的GWT。
您最好的选择是在客户端使用GWT来处理服务器通信(然后可能将结果传递给jQuery),或者在服务器端编写类似servlet的东西,它是GWT的备用接口 - RPC调用。
然而,如果你坚持走这条路,那么这个问题的起点是: GWT RPC data format
所选答案链接源以获取格式的基本概述。尽管有详细的信息,但除了深入了解之外别无选择。该协议在其他任何地方都没有完整记录。