0

ユーザーが生成したクリックから 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 メソッドをトリガーし、サーバー側のテキスト変更を取得するにはどうすればよいですか?

4

1 に答える 1

1

クライアント側から状態を更新することはできません。サーバーのみが状態を更新できます。クライアントからサーバーに RPC 要求を送信し、サーバーで値を状態に更新する必要があります。

編集、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
  }
});
于 2015-02-28T02:17:23.133 に答える