我想解决此帖子中解决的问题: Vaadin "A connector with id xy is already registered"
当我将以下代码添加到MyUI时,我在getLogger()
lline中收到错误:“ConnectorTracker类型中的方法getLogger()不可见”
public class SomeUI extends UI {
private ConnectorTracker tracker;
@
Override
public ConnectorTracker getConnectorTracker() {
if (this.tracker == null) {
this.tracker = new ConnectorTracker(this) {
@
Override
public void registerConnector(ClientConnector connector) {
try {
super.registerConnector(connector);
} catch (RuntimeException e) {
getLogger().log(Level.SEVERE, "Failed connector: {0}", connector.getClass().getSimpleName());
throw e;
}
}
};
}
return tracker;
}
}
是否可以快速解决此问题或任何其他解决方案如何修复xy连接器异常?
我将spring boot
与vaadin 7
一起使用。
答案 0 :(得分:0)
getLogger()方法是私有的,您正在实现匿名子类型,该子类型只能访问公共和受保护的方法。您可以轻松地将自己的getLogger添加到UI子类中:
private static Logger getLogger() {
return Logger.getLogger(SomeUI.class.getName());
}
private ConnectorTracker connectorTracker;
@Override
public ConnectorTracker getConnectorTracker() {
if (connectorTracker == null) {
connectorTracker = new ConnectorTracker(this) {
@Override
public void registerConnector(ClientConnector connector) {
try{
super.registerConnector(connector);
} catch (RuntimeException e) {
getLogger().log(Level.SEVERE, "OOPS!");
throw e;
}
}
};
}
return connectorTracker;
}
答案 1 :(得分:0)
要修复连接器xy已经注册的问题,您需要检查是否有任何组件(视图,布局,按钮,面板,等等......)多次添加到视图中。
因此,如果使用new VerticalLayout()
创建布局,则无法重复使用它。
这意味着你应该检查你所有的Vaadin组件和你自己的Views / UI-Components,如果它们被使用了两次或者其中一些是静态的。