Re: HtmlWidget missing a MapStack pop?
Posted by
BJ Freeman on
Nov 27, 2007; 6:33am
URL: http://ofbiz.116.s1.nabble.com/HtmlWidget-missing-a-MapStack-pop-tp185908p185913.html
so there is no checking of a element exists like the xml, bsh or ftl files.
hmmm will have to check out.
Jonathon -- Improov sent the following on 11/26/2007 9:12 PM:
> BJ,
>
> I had written the test case in the first post to this thread. You can
> reproduce bug there.
>
> I believe Al Byers has already fixed this?
>
> Jonathon
>
> BJ Freeman wrote:
>> Per david, I i would like to test this.
>> could you send the files you used as an attachment?
>> or open a jira and put then there.
>> thanks.
>>
>>
>> Jonathon -- Improov sent the following on 11/26/2007 9:47 AM:
>>> Oh. Sorry.
>>>
>>> ${component:widget}/src
>>>
>>> package org.ofbiz.widget.screen;
>>>
>>> Jonathon
>>>
>>> BJ Freeman wrote:
>>>> can you give a reference to where the code is.
>>>> can't seem to find it.
>>>>
>>>>
>>>> Jonathon -- Improov sent the following on 11/26/2007 8:09 AM:
>>>>> Hmm. Another quirk that sent me off the cliff. :)
>>>>>
>>>>> HtmlWidget.render(Writer, Map, ScreenStringRenderer) seems to be
>>>>> missing
>>>>> a MapStack pop.
>>>>>
>>>>> To see the bug, do the 2 screen widgets below, "SomeScreen" and
>>>>> "SomeDecorator".
>>>>>
>>>>> What happens is that section "section2" is gone after processing
>>>>> "section1" in "SomeDecorator".
>>>>>
>>>>> Here's why.
>>>>>
>>>>> See "SomeDecorator". The SectionsRenderer stored in variable
>>>>> "sections"
>>>>> is created with one section at the line of
>>>>> <html-template-decorator-section name="section1">. This
>>>>> SectionsRenderer
>>>>> is created in a private context, with the context of "SomeScreen"
>>>>> pushed
>>>>> into a MapStack.
>>>>>
>>>>> Before that, the SectionsRenderer stored in variable "sections" in the
>>>>> previous context (that of "SomeScreen") was created with 2 sections
>>>>> "section1" and "section2".
>>>>>
>>>>> During processing, because the first SectionsRenderer (with only 1
>>>>> section "section1") was never popped from the MapStack, it is used
>>>>> to do
>>>>> the next section include <decorator-section-include name="section2"/>.
>>>>> Obviously, the section "section2" does not exist.
>>>>>
>>>>> <screen name="SomeScreen">
>>>>> <section>
>>>>> <widgets>
>>>>> <decorator-screen name="SomeDecorator">
>>>>>
>>>>> <decorator-section name="section1">
>>>>> <label text="Section One content"/>
>>>>> </decorator-section>
>>>>>
>>>>> <decorator-section name="section2">
>>>>> <label text="Section Two content"/>
>>>>> </decorator-section>
>>>>>
>>>>> </decorator-screen>
>>>>> </widgets>
>>>>> </section>
>>>>> </screen>
>>>>>
>>>>> <screen name="SomeDecorator">
>>>>> <section>
>>>>> <widgets>
>>>>>
>>>>> <platform-specific><html>
>>>>> <html-template-decorator location="SomeTemplate.ftl">
>>>>> <html-template-decorator-section name="section1">
>>>>> <decorator-section-include name="section1"/>
>>>>> </html-template-decorator-section>
>>>>> </html-template-decorator>
>>>>> </html></platform-specific>
>>>>>
>>>>> <decorator-section-include name="section2"/>
>>>>>
>>>>> </widgets>
>>>>> </section>
>>>>> </screen>
>>>>>
>>>>> Jonathon
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>
>
>