You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Chris Poulsen (JIRA)" <ji...@apache.org> on 2016/12/06 11:11:35 UTC

[jira] [Created] (TAP5-2566) RenderInformals mixin does not work with interited informal parameters

Chris Poulsen created TAP5-2566:
-----------------------------------

             Summary: RenderInformals mixin does not work with interited informal parameters
                 Key: TAP5-2566
                 URL: https://issues.apache.org/jira/browse/TAP5-2566
             Project: Tapestry 5
          Issue Type: Bug
          Components: tapestry-core
    Affects Versions: 5.4.1
            Reporter: Chris Poulsen


It seems like the informal parameters are not propagated to the mixin, if they are inherited. Explicitly rendering the informals instead works.

The following example illustrates the issue:

{code:title=Page.tml}
...
<t1 inheritedInformal="inheritedInformal"/>
...
{code}

{code:title=T1.java}
@SupportsInformalParameters
public class T1
{
    @Component( inheritInformalParameters = true )
    private T2 t2;
}
{code}
{code:title=T1.tml}
<div xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd">
<t:content>
    <span t1="t1">
        <span t:id="t2"/>
    </span>
</t:content>
</div>
{code}
{code:title=T2.java}
public class T2
{
    @Mixin
    private RenderInformals renderInformals;  // Does not work like expected

    @BeginRender
    void begin( MarkupWriter writer )
    {
        writer.element( "span", "t2", "t2" );
        // resources.renderInformalParameters( writer ); // Works like expected
    }

    @AfterRender
    void after( MarkupWriter writer )
    {
        writer.end();
    }

    @Inject
    private ComponentResources resources;
}
{code}

The expected output should be:
{code}
<span t1="t1">
  <span inheritedinformal="inheritedInformal" t2="t2"></span>
</span>
{code}
But the produced output is:
{code}
<span t1="t1">
  <span t2="t2"></span>
</span>
{code}

The problem have arisen because we wrap the tapestry Radio component (which uses the RenderInformals mixin) 

A workaround could be to use the RenderNotification plugin and explicitly render the informals in the parent component (T1 in the sample) - but that is not really a nice "solution" (or expected behavior)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)