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/

Reply via email to