如何从窗口小部件侧显式访问连接器到Vaadin 7?
我用他的服务器端类和客户端(连接器类、ServerRPC类、状态类和小部件类)创建了一个小部件 连接器:如何从窗口小部件侧显式访问连接器到Vaadin 7?,vaadin,Vaadin,我用他的服务器端类和客户端(连接器类、ServerRPC类、状态类和小部件类)创建了一个小部件 连接器: @Connect(Custom.class) public class CustomConnector extends ButtonConnector { ... public void myFunc() { // DO Something } } public class CustomWidget extends VButton { ... pri
@Connect(Custom.class)
public class CustomConnector extends ButtonConnector {
...
public void myFunc() {
// DO Something
}
}
public class CustomWidget extends VButton {
...
private CustomConnector conn = new CustomConnector();
public CustomWidget () {
conn.myFunc();
}
...
}
小部件:
@Connect(Custom.class)
public class CustomConnector extends ButtonConnector {
...
public void myFunc() {
// DO Something
}
}
public class CustomWidget extends VButton {
...
private CustomConnector conn = new CustomConnector();
public CustomWidget () {
conn.myFunc();
}
...
}
现在,我想从Widget类显式地调用/访问连接器对象,它不是单例对象,这样我也可以访问函数。我如何解决这个问题?我认为您不应该直接从GWT小部件访问连接器。这与Vaadin 7体系结构相反,在该体系结构中,GWT小部件是完全独立于Vaadin的对象 但是,如果我们谈论从Vaadin 6到7的脏迁移,那么解决方案可能是:
ComponentConnector-connector=ConnectorMap.get(client.getConnector(CustomWidget.this);//客户端取自updateFromUIDL方法(Vaadin6)
更好的解决方案是将“状态”侦听器添加到小部件中
public interface CustomWidgetStateListener {
public void stateChanged();
}
public class CustomWidget extends VButton {
...
CustomWidgetStateListener listener;
public void addStateListener(CustomWidgetStateListener listener) {
this.listener = listener;
}
public void notifyStateChanged() { // You can call notifyStateChanged() whenever you want to notify connector
listener.stateChanged();
}
...
}
public class CustomConnector extends ButtonConnector {
public CustomConnector() {
getWidget().addStateListener(new CustomWidgetStateListener() {
public void stateChanged() {
myFunc();
}
});
}
...
public void myFunc() {
// DO Something
}
}