我正在努力理解client
和server
在vaadin 7
中沟通的方式。在server->client
通信方面,我已经理解了这一点,但我仍然无法理解它是如何工作的,即从客户端到服务器。我已经读过,在客户端,我们不应该更改State
,但是他们应该通过rpc
发送相关数据。在客户端,有一个MyComponentClientRpc
接口,其中包含一些方法,开发人员应在Connector
类中实现它们。然后可以将接口实例化为服务器上的匿名类,并可以调用该方法。但是,如果在客户端上有一个字符串“myString”,它怎么能转移到服务器,因为在调用它时,只能调用服务器上传递参数的方法?那怎么能把数据放在客户端上呢?
public interface MyComponentClientRpc extends ClientRpc {
public void getString(String s);
}
public class MyComponentConnector extends AbstractComponentConnector {
@SuppressWarnings("serial")
MyComponentClientRpc mcRpc = new MyComponentClientRpc() {
public void getString(String s) {
// TODO Do something useful
????
}
};
public MyComponentConnector() {
registerRpc(MyComponentClientRpc.class, mcRpc);
String a = "myString";
....
}
特别是,如何在客户端上实现该方法,如何在其中插入数据以及如何在服务器上调用它?
答案 0 :(得分:1)
但是如果一个人在客户端上有一个字符串“myString”,它怎么可能 转移到服务器,因为只能在服务器上调用该方法 在调用它时传递参数?怎么可以得到 客户端的数据?
您使用的是错误的机制。实际上有两个RPC,ClientRpc
和ServerRpc
。在您的示例中,您使用ClientRpc
,用于从服务器到客户端的调用。
要从客户端与服务器进行通信,您必须从ServerRpc
扩展。
在客户端,您致电
MyComponentClientRpc rpc = RpcProxy.create(MyComponentClientRpc.class, this)
以获取代理。