[英]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.