wow !! this wicket is sooo cool :) I did exactly what you suggested and it works like a charm. public IResourceStream getMarkupResourceStream(MarkupContainer container, Class containerClass) { if (html == null) { final DefaultMarkupResourceStreamProvider markupResourceStreamProvider = new DefaultMarkupResourceStreamProvider(); return markupResourceStreamProvider.getMarkupResourceStream(container, containerClass); } else { StringResourceStream myhtml = new StringResourceStream(new StringBuilder(html));
// The following line is the line that caused the problem of non inserted header contributers // MarkupResourceStream m = new MarkupResourceStream(myhtml); // The following is the fix return new MarkupResourceStream(myhtml, new ContainerInfo(container), containerClass); } } // In order to keep in my cache the "real" markup, here is what I did public String getCacheKey(MarkupContainer container, Class containerClass) { if (html == null) { DefaultMarkupCacheKeyProvider cacheKeyProvider = new DefaultMarkupCacheKeyProvider(); return cacheKeyProvider.getCacheKey(container, containerClass); } else { return null; } } Thanks Igor On Wed, May 14, 2008 at 5:29 PM, Igor Vaynberg <[EMAIL PROTECTED]> wrote: > if you do not want the markup to be cached you have to also implement > IMarkupCacheKeyProvider. returning null from getcachekey will prevent > wicket from caching the markup. > > -igor > > > On Wed, May 14, 2008 at 5:42 AM, Eyal Golan <[EMAIL PROTECTED]> wrote: > > Hi, > > I tried implementing the IMarkupResourceStreamProvider in my web page: > > public IResourceStream getMarkupResourceStream(MarkupContainer > > container, > > Class containerClass) { > > if (html != null) { > > StringResourceStream myhtml = new StringResourceStream(new > > StringBuilder(html)); > > MarkupResourceStream m = new MarkupResourceStream(myhtml); > > return m; > > } else { > > final DefaultMarkupResourceStreamProvider > > markupResourceStreamProvider = > > new DefaultMarkupResourceStreamProvider(); > > return > > markupResourceStreamProvider.getMarkupResourceStream(container, > > containerClass); > > } > > } > > > > (html is a class member that may or may not be available) > > > > It did not work: > > 1. The Cache keeps the last html markup, so if I open this page once WITH > > html != null I get what I want (but with the same problem. look at next > > note). If then I open the page and the html IS null, the cache returns > the > > earlier page. So this approach is no good. > > > > 2. In any case, HeaderContributers that are on components that in the > page > > are not added to the output markup. > > > > Are the 2 lines: > > StringResourceStream myhtml = new StringResourceStream(new > > StringBuilder(html)); > > MarkupResourceStream m = new MarkupResourceStream(myhtml); > > The problem ? > > > > Thanks > > > > On Thu, May 8, 2008 at 6:41 AM, Igor Vaynberg <[EMAIL PROTECTED]> > > wrote: > > > >> you shouldnt be overriding that method, try implementing > >> IMarkupResourceStreamProvider instead. > >> > >> -igor > >> > >> > >> On Tue, May 6, 2008 at 11:20 PM, Eyal Golan <[EMAIL PROTECTED]> wrote: > >> > ok, maybe I wasn't clear enough. > >> > The simple question is, why the add(HeaderContributor.forCss...)); > >> > is not added to the output markup when I override > >> getAssociatedMarkupStream? > >> > > >> > Thanks > >> > > >> > > >> > > >> > On Tue, May 6, 2008 at 4:08 PM, Eyal Golan <[EMAIL PROTECTED]> > wrote: > >> > > >> > > Hi all, > >> > > We have this method: > >> > > @Override > >> > > public MarkupStream getAssociatedMarkupStream(final boolean > >> > > throwException) > >> > > { > >> > > if(html != null) { > >> > > return GUIUtis.getMarkupStream(this, html); > >> > > } > >> > > return super.getAssociatedMarkupStream(throwException); > >> > > } > >> > > > >> > > and: > >> > > static public MarkupStream getMarkupStream(Page page,String > >> htmlText){ > >> > > try > >> > > { > >> > > StringResourceStream myhtml = new > StringResourceStream(new > >> > > StringBuilder(htmlText)); > >> > > MarkupResourceStream m = new > MarkupResourceStream(myhtml); > >> > > Markup myMarkup = > >> > > > >> > page.getApplication().getMarkupSettings().getMarkupParserFactory().newMarkupParser(m).parse(); > >> > > MarkupStream markupStream = new MarkupStream(myMarkup); > >> > > return markupStream; > >> > > } > >> > > catch (Exception ex) > >> > > { > >> > > throw new RuntimeException("Fail to parse > >> > > markup:\n"+htmlText); > >> > > } > >> > > } > >> > > > >> > > The problem: > >> > > When the html is not null (and we enter GUIUtis.getMarkupStream), > >> > > css that where added using HeaderContributer are not added to the > >> output > >> > > HTML markup. > >> > > I have something like this in a component: > >> > > add(HeaderContributor.forCss(EurekifyButton.class, > >> "EurekifyButton.css")); > >> > > The css is missing. > >> > > > >> > > I can't change the usage of getAssociatedMarkupStream to use > variation > >> or > >> > > something like this. > >> > > > >> > > any thought? > >> > > -- > >> > > Eyal Golan > >> > > [EMAIL PROTECTED] > >> > > > >> > > Visit: http://jvdrums.sourceforge.net/ > >> > > >> > > >> > > >> > > >> > -- > >> > Eyal Golan > >> > [EMAIL PROTECTED] > >> > > >> > Visit: http://jvdrums.sourceforge.net/ > >> > > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > > > > > > -- > > Eyal Golan > > [EMAIL PROTECTED] > > > > Visit: http://jvdrums.sourceforge.net/ > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Eyal Golan [EMAIL PROTECTED] Visit: http://jvdrums.sourceforge.net/