繁体   English   中英

通过单击GWT按钮来更改连接器中Vaadin定制小部件中的状态,并在服务器端获取它

[英]Change the state in a Vaadin custom widget in the connector through a GWT button click and get it server side

我试图通过用户生成的点击在Vaadin自定义窗口小部件中设置状态。 实例化服务器rpc之后,在组件连接器中,我得到了GWT按钮并添加了onclick方法。 在该方法中,我设置了状态(getState.text =“ new text”;),但是当我尝试从服务器端获取状态时,则会得到原始状态文本。 不会触发onStateChange方法。

连接器中的代码:

        getWidget().getSaveButton().addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            alert("does it work without jquery?");
            getState().text = "text changed from connector";
            getWidget().getTextBox().setText(getState().text);
        }
    });

单击GWT按钮后,文本框将文本包含为“文本已从连接器更改”

在该州:

public String text = "original state text";

UI实现获取状态:

vaadinButton.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            Notification.show(sig.getState().text);

        }
    });

单击GWT按钮后单击vaadin按钮时,通知仍显示“原始状态文本”。

我的问题:如何更改连接器中的状态,使其触发onStateChange方法,并在服务器端获取文本更改?

无法从客户端更新状态。 只有服务器可以更新状态。 您应该这样做,以便将RPC请求从客户端发送到服务器,然后在服务器上将值更新为state。

编辑,这是一个有关如何使用Vaadin的RPC机制从客户端向服务器发送值的示例:

创建一个扩展ServerRpc的接口:

public interface MyServerRpc extends com.vaadin.shared.communication.ServerRpc {
  void setValue(String value)
}

使用从上述界面创建的代理将价值发送到服务器。 该调用在连接器内部完成。

getRpcProxy(MyServerRpc.class).setValue("New value to server");

将接口实现注册到您的服务器端组件以接收RPC调用:

registerRpc(new MyServerRpc() {

  public void setValue(String value) {
    // set the value to state here by saying getState().myValue = value;
    // or do something else
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM