Hi

I have a problem with inherit parameter binding in 5.1.0.2 and 5.1.0.1 release 
(5.0.18 is OK).
Inherited value is lost if count of inheritance in stack for one component 
parameter is more than 1 (not sure if this is good description).

Example will be the best description of my problem...

First are mentioned responses generated by T5.1 and T5 a bellow is source code 
for page and components.

Can you please help me ?
Is this a bug of T5.1 or inherit binding is discontinued ?

Thanks

P.



Tapestry 5.1.0.2:

During render of Contact page is lost parameter value for component c3.

                        <div>test value by property</div>
                        <div>test value by property</div>
                        <div></div>

                        <div>literal value</div>
                        <div>literal value</div>
                        <div></div>

System.out:
C1.parameter = test value by property
C2.parameter = test value by property
C1.parameter = test value by property
C3.parameter = test value by property
C2.parameter = test value by property
C1.parameter = null
C1.parameter = literal value
C2.parameter = literal value
C1.parameter = literal value
C3.parameter = literal value
C2.parameter = literal value
C1.parameter = null
---

Tapestry 5.0.18:

C3 component has its value:
                        <div>test value by property</div>
                        <div>test value by property</div>
                        <div>test value by property</div>

                        <div>literal value</div>
                        <div>literal value</div>
                        <div>literal value</div>

System.out:
C1.parameter = test value by property
C2.parameter = test value by property
C1.parameter = test value by property
C3.parameter = test value by property
C2.parameter = test value by property
C1.parameter = test value by property
C1.parameter = literal value
C2.parameter = literal value
C1.parameter = literal value
C3.parameter = literal value
C2.parameter = literal value
C1.parameter = literal value

--------

Page Contact:

public class Contact 
{
        public String getValue() {
                return "test value by property";
        }
}

<html t:type="layout" title="Contact org.example"
      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";
      xmlns:p="tapestry:parameter">

    <p>Contact org.example ...</p>
                        <t:c1 parameter="value"/>
                        <t:c2 parameter="value"/>
                        <t:c3 parameter="value"/>

                        <t:c1 parameter="literal:literal value"/>
                        <t:c2 parameter="literal:literal value"/>
                        <t:c3 parameter="literal:literal value"/>

</html>

--------

Component C1:

public class C1 {
        
        @Parameter
        private Object parameter;
        
        public Object getParameter() {
                return parameter;
        }
        
        @BeforeRenderTemplate
        void bedoreTemplate(MarkupWriter writer) {
                System.out.println("C1.parameter = " + 
String.valueOf(parameter));
        }
}

<div 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";>${parameter}</div>


--------

Component C2:

public class C2 {

        @Parameter
        private Object parameter;
        
        @BeforeRenderTemplate
        void bedoreTemplate(MarkupWriter writer) {
                System.out.println("C2.parameter = " + 
String.valueOf(parameter));
        }
}

<t:c1 xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"; 
t:parameter="inherit:parameter" />

--------

Component C3:

public class C3 {

        @Parameter()
        private Object parameter;
        
        @BeforeRenderTemplate
        void bedoreTemplate(MarkupWriter writer) {
                System.out.println("C3.parameter = " + 
String.valueOf(parameter));
        }
}

<t:c2 xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"; 
t:parameter="inherit:parameter" />

Reply via email to