2017-03-16 55 views
1

我想修復它在此公告解決了問題: Vaadin "A connector with id xy is already registered"「ID爲連接器已被註冊!」在vaadin

當我添加以下代碼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連接異常? 我正在使用vaadin 7的彈簧引導。

回答

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; 
} 
0

要解決的一個連接器XY已經註冊的問題,您需要檢查,如果你的任何組件(意見,佈局,按鈕,面板,無論什麼.. )不止一次添加到視圖。

因此,如果使用new VerticalLayout()創建佈局,則無法重用它。

這意味着您應該檢查所有Vaadin組件和您自己的視圖/ UI組件,如果它們被使用兩次或者其中一些是靜態的。

+0

嘿感謝你的answar可能有可能是一個抽象的Java腳本組件與連接器和狀態類可能是原因? – hhwwww