You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Thiago H. de Paula Figueiredo (JIRA)" <ji...@apache.org> on 2009/05/15 16:14:45 UTC

[jira] Closed: (TAP5-705) Let a page choose its layout

     [ 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.