通过 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 按钮后,文本框包含 "text changed from connector"
的文本
处于状态:
public String text = "original state text";
获取状态的UI实现:
vaadinButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Notification.show(sig.getState().text);
}
});
在单击 GWT 按钮后单击 vaadin 按钮时,通知仍然显示 "original state text"。
我的问题:
如何更改连接器中的状态以触发 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
}
});
我正在尝试通过用户生成的点击设置 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 按钮后,文本框包含 "text changed from connector"
的文本处于状态:
public String text = "original state text";
获取状态的UI实现:
vaadinButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Notification.show(sig.getState().text);
}
});
在单击 GWT 按钮后单击 vaadin 按钮时,通知仍然显示 "original state text"。
我的问题: 如何更改连接器中的状态以触发 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
}
});