[ 
https://issues.apache.org/jira/browse/TAP5-705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thiago H. de Paula Figueiredo closed TAP5-705.
----------------------------------------------

    Resolution: Won't Fix

This cannot be implemented in Tapestry without huge architectural changes, as 
it is dynamic structure, and Tapestry is implemented under the "static 
structure, dynamic behaviour" philosophy. In addition, it would handle layout 
components in a different way from normal components, something Tapestry 5 does 
not do. Anyway, this can be implemented using blocks and the Delegate 
component: create a Layout component and use Delegate inside it, not inside the 
pages.

> Let a page choose its layout
> ----------------------------
>
>                 Key: TAP5-705
>                 URL: https://issues.apache.org/jira/browse/TAP5-705
>             Project: Tapestry 5
>          Issue Type: Wish
>          Components: tapestry-core
>    Affects Versions: 5.0.18
>            Reporter: Borut Bolcina
>
> It would be great if a page could dynamically choose its layout. In some 
> cases the page would use Layout1 component and in some cases Layout2.
> The t:type="${layout}" does not get expanded to whatever I set in Index.java.
> PageWithLayout.tml
> ===============
> <div t:type="${layout}" 
> xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>
>     <p>page with ${layout}</p>
> </div>
> PageWithLayout.java
> ===============
> public class PageWithLayout {
>     private String layout;
>    
>     public String getLayout() {
>         return layout;
>     }
>     public void setLayout(String layout) {
>         this.layout = layout;
>     }
> }
> Index.tml
> =======
> <t:actionlink t:id="PageWithLayout1">layout1</t:actionlink><br/>
> <t:actionlink t:id="PageWithLayout2">layout2</t:actionlink>
> Index.java
> =======
> public class Index {
>     @InjectPage
>     private PageWithLayout pageWithLayout;
>    
>     Object onActionFromPageWithLayout1() {
>         pageWithLayout.setLayout("layout1");
>         return pageWithLayout;
>     }
>    
>     Object onActionFromPageWithLayout2() {
>         pageWithLayout.setLayout("layout2");
>         return pageWithLayout;
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to