Vaadin 7:从服务器到客户端的RPC调用

Vaadin 7:从服务器到客户端的RPC调用,vaadin,vaadin7,Vaadin,Vaadin7,我想创建自定义图像组件。因此,我从开始一步一步地执行。对于基本步骤或第一步,我为测试创建了以下步骤 MyComponentWidget.java MyComponentConnector.java MyComponentClientRpc.java MyComponent.java 并称为 MyComponent image = new MyComponent("myImageUrl"); System.out.println(image.getHTML()); 我的问题是为什么我总是在控制台

我想创建自定义图像组件。因此,我从开始一步一步地执行。对于基本步骤或第一步,我为测试创建了以下步骤

MyComponentWidget.java

MyComponentConnector.java

MyComponentClientRpc.java

MyComponent.java

并称为

MyComponent image = new MyComponent("myImageUrl");
System.out.println(image.getHTML());

我的问题是为什么我总是在控制台上得到空值?我可以在浏览器中看到图像,但System.out.printlnimage.getHTML;生成空值。我缺少什么?

要从客户端到服务器进行rpc调用,必须扩展ServerRpc接口,例如:

package com.example.client.MyServerRpc

public interface MyServerRpc extends com.vaadin.shared.communication.ServerRpc {
    void sendHTML(String html);
}
在连接器中注册rpc:

private MyServerRpc rpc = RpcProxy.create(MyServerRpc.class, this);
然后,您可以使用连接器中注册的rpc发送值:

 rpc.sendHTML(html);
要在组件或扩展的服务器端类上接收值,必须创建rpc接口的实例:

private MyServerRpc rpc = new MyServerRpc() {
    @Override
    public void sendHTML(String html) {
        // this method will be called!
    }

};
并在构造函数中注册:

registerRpc(rpc);

完成这些步骤后,从客户端到服务器的RPC应该可以工作。

对于2,superdevmode重建@cfrick需要10秒,现在我正在为2准备新问题。谢谢。@Cataclysm你到底想做什么。从服务器向浏览器发送RPC消息?@HenriKerola不,先生,我正在尝试从服务器获取小部件的HTML表示。所以我调用image.getHTML并将客户端rpc方法中componentstate的html值设置为getState.setHtmlgetWidget.getHTML;。我进行了调试,但从未调用clientrpc方法。我怎么了,先生?先生!谢谢你的回答,但我的问题标题是Vaadin 7:从服务器到客户端的RPC调用。服务器到客户端所以,我使用了ClientRpc而不是客户端到服务器。在问题的注释中,你说,你想向服务器传输一个值。是的,先生!我想将小部件的HTML表示从客户端传输到服务器,但如果我想将任何东西从客户端传输到服务器,我需要一些事件。所以我从服务器组件调用,没有任何客户端事件。所以我使用clientrpc从服务器到客户端调用rpc。如果我错了,请纠正我,先生。谢谢,我真的很感激你的建议。
package com.example.client.MyServerRpc

public interface MyServerRpc extends com.vaadin.shared.communication.ServerRpc {
    void sendHTML(String html);
}
private MyServerRpc rpc = RpcProxy.create(MyServerRpc.class, this);
 rpc.sendHTML(html);
private MyServerRpc rpc = new MyServerRpc() {
    @Override
    public void sendHTML(String html) {
        // this method will be called!
    }

};
registerRpc(rpc);