単純なアプリケーションで VAADIN フレームワークを使用しています。私は2つのカスタムコンポーネントを持っています。
@ClientWidget(value = VComponent1.class)
public class Component1 {
private Component2 cmp2;
public void setDataSource(Component2 cmp2) {
this.cmp2 = cmp2;
}
}
と
@ClientWidget(value = VComponent2.class)
public class Component2 {
}
それらをサーバー側でバインドしたいと思います。
...
Component2 cmp2 = new Component2();
Component1 cmp1 = new Component1();
cmp1.setDataSource(cmp2);
mainWindow.addComponent(cmp1);
mainWindow.addComponent(cmp2);
...
質問は、バインド情報を VComponent1 に送信する方法がわからないということです。
VComponent1 には、VComponent2 への直接リンクが必要です。
public class VComponent2 implements Paintable {
public String getCurrentData() {
return "Hello";
}
}
public class VComponent1 implements Paintable,
ClickHandler {
VComponent2 dataSource;
@Override
public void onClick(ClickEvent event) {
super.onClick(event);
String data = dataSource.getCurrentData();
client.updateVariable(uidlId, "curData", data, true);
}
}
特定の時間の問題があるため、Component2 のサーバー部分を介した通信を避ける必要があります。VComponent1 は VComponent2 に直接アクセスできる必要があります。
私のシナリオを教えてください。
ありがとう、有友