Hi Raziel, It might help if you explained what the problem is that you are trying to solve.
I can't think of any situation where an html page needs more than one GWT app in it. Ian http://examples.roughian.com 2009/10/30 Raziel <[email protected]> > > Hi Thomas, thanks for the links, although like the ticket says they're > not very conclusive, and not quite what I'm looking for. > > In general I'm thinking through all the considerations I have to keep > in mind to build this application which can be injected into the same > page, by different and unrelated sections of code. > > The obvious scenarios, like creating or looking for elements by > specific IDs, I'm aware of. When I said "generate IDs for a widget > these must be namespaced according to the application's instance that > created it" I meant exactly what you said: the application instance > has to know, somehow (probably passed from the snipped of code that > included it), something that "identifies" it and thus can serve to > name-space it and be able to truly generate different IDs to the other > instances. > > My concern is with those things that are not obvious, at least to me. > For example: if you end up with code like the one below, generated > from unrelated pieces of code, the three nocache scripts will create > the exact same selection script named after the module, with the exact > same implementation. Thus, by default there will be 3 iframe generated > containing the injected JS of the application. That's bad HTML since > the iframe tags have an assigned ID equal to the module name, and thus > the document will end up with 3 elements with the same ID. But not > only that: the selection bootstrap script uses the ID to grab the > iframe and call the gwtOnLoad function of the application instance > living within. You can see how this would be error prone since there's > no guarantee that the right iframe will be obtained. > > <div id="instance1"> > <script src="/blah/blah/myapp.nocache.js"> > </div> > <div id="instance2"> > <script src="/blah/blah/myapp.nocache.js"> > </div> > <div id="instance3"> > <script src="/blah/blah/myapp.nocache.js"> > </div> > > > There's not much (if anything) I can do during compile time since the > parameters to identify the applications are available only at runtime. > Even worst in my case, as I said, the instances (injection snippets) > can be done by different unrelated sections of the page. So I have to > figure out how to parameterize the selection script with the runtime > values it needs to 1) uniquely identify the script to avoid calling > one of the exposed function on the wrong script 2) put different IDs > to the iframes 3) obtain the right iframe using the right ID. So this > calls for a new primary linker to change the bootstrap logic. The main > issue being how the script should retrieve the runtime values (since > there's no central place that can provide them). > > Anyway, that's my specific problem, but I'm wondering if there are > other considerations I should be aware of. > > Thanks > > > > On Oct 29, 9:20 pm, Thomas Broyer <[email protected]> wrote: > > On 30 oct, 01:15, Raziel <[email protected]> wrote: > > > > > Hi, I have a legacy application and thus I'm migrating to GWT by > > > reimplementing parts of it at a time. However, one of this "parts" may > > > appear in a document more than once, displaying different information. > > > > > Aside from ensuring that if I generate IDs for a widget these must be > > > namespaced according to the application's instance that created it (in > > > case I retrieve them by ID somewhere), are there any other precautions > > > that I should take to avoid collisions between application instances? > > > For example, since the GWT application is put inside an iframe whose > > > id is the name of the application's module, shouldn't it be necessary > > > to generate the iframes with different ids? Otherwise we'll end up > > > with elements (the iframes) with the same ID. > > > > If you included the very same JS script, why would it run differently > > than the previous one? I mean, you use RootPanel.get(XXX) or > > Document.get().getElementById(XXX) somewhere in your app; and XXX > > cannot be different for 2 "instances" of the same app in the page > > (it's either hard-coded or taken from the same Dictionnary –whose name > > is hard-coded– or the URL), right? > > > > If you want your app to appear more than once, in different > > "containers" of the same page, you'd have to use a Dictionnary or > > similar to pass the containers' IDs to the app, and the app loops > > through the list to instantiate as many "root components" as > > necessary. > > Seehttp:// > groups.google.com/group/Google-Web-Toolkit-Contributors/browse... > > andhttp://code.google.com/p/google-web-toolkit/issues/detail?id=2592 > > > > Or am I misunderstanding you? > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en -~----------~----~----~----~------~----~------~--~---
