Running another Vaadin 7 app in a BrowserFrame fails due to interference fr

I ported my Vaadin 6 apps to Vaading 7 and directly ran into problems. I have a main admin app which uses a TabSheet and the contents of each tab was an Embedded instance and now is a BrowserFrame. The content of the BrowserFrame is another Vaadin app (different admin apps are registered with the main admin app). Not all of the apps in the tabs are Vaadin apps, but most are. This worked perfectly fine in Vaadin 6, but with 7 there are interference from the main admin app owning the tabs and who uses BrowserFrame and the Vaadin app within the BrowserFrame. If I bring up the url of the framed app in another browser window or (real) browser tab it works perfectly, but within a Vaadin BrowserFrame it does not.

The only workaround to this problem I have found is the following:

        // This is a workaround to the problem that Vaadin 7 cannot run another Vaadin application embedded in a tab without
        // having the "outer" Vaadin application interfere with it. Therreby we setup an old frame in which we load ourself.
        VaadinSession.getCurrent().addRequestHandler(new RequestHandler() {
            @Override
            public boolean handleRequest(VaadinSession session, VaadinRequest request, VaadinResponse response) throws IOException {
                boolean handled = false;

                if (request != null && request.getParameterMap().containsKey("frame")) {
                    handled = true;
                    response.setContentType("text/html");
                    response.getWriter().append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\"\n" +
                            "   \"http://www.w3.org/TR/html4/frameset.dtd\">");
                    response.getWriter().append("<html>");
                    response.getWriter().append("<frameset>");
                    response.getWriter().append("<frame src=\"/apsadminweb/config\">");
                    response.getWriter().append("</frame>");
                    response.getWriter().append("</frameset>");
                    response.getWriter().append("</html>");
                }
                return handled;
            }
        });

I’m adding a ?frame=true to the URL and then it renders a simple page containing a with only one .

This works, but is more than little annoying having to do. There must be a better solution to this, or are Vaading application no longer supported within a BrowserFrame ?

I can also add that TabSheet seem to create a new BrowserFrame each time a tab is selected causing the web app running within the BrowserFrame to be reinitialized.

I forgott to mention that the config app running within the BrowserFrame Is using a Tree component for navigating the configurations. When run directly in the BrowserFrame it does not get its data, and the rendered component is visible (showing root node, which is created directly after the Tree component have been created), but greyed out.

Running the “outer” admin app providing the tabs and the BrowserFrame:s in a tab in itself seems to work fine (I did this just to test). So maybee it is just the Tree component that has problems (and possible other), but not all.

JUST FORGETT THIS POST!

Another Vaadin app using the same type of GUI components, including Tree works fine running in a BrowserFrame!!

The first app mentioned above must be doing something truly strange that makes it fail when run in a BrowserFrame, and not when run directly. Whatever this is it did not have an effect in Vaadin 6, but in Vaadin 7 it does.

I should probably have ported all my Vaadin apps to version 7 before posting this …