2014-02-06 82 views
2

我怎樣才能將繼承設計的下一個例子轉換成tapestry5的成分設計?繼承設計到成分設計tapestry5

ParentComponent.tml:

<container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter" t:content="text/html; charset=utf-8"> 
    this is parent component<br/> 

    <extension-point id="body_child"/> 
</container> 

ParentComponent.java:

public abstract class ParentComponent { 

@Property 
@Parameter(required=true) 
private String param1; 
@Property 
@Parameter(required=true) 
private String param2; 
@Property 
@Parameter(required=true) 
private String param3; 

}

C1.tml:

<t:extend xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter" t:content="text/html; charset=utf-8"> 
<t:replace id="body_child"> 
    body of c1 ${param1}, ${param2}, ${param3} 
</t:replace> 

C1.java:

public class C1 extends ParentComponent { 

}

test.tml:

<t:c1 param1="1" param2="2" param3="3"/> 

在此先感謝。

回答

1

這聽起來像你只是在尋找一個佈局組件。它可以實現像這樣:

添加機構佈局的組件(父)

<container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter" t:content="text/html; charset=utf-8"> 
    this is parent component<br/> 
    <t:body/> 
</container> 

既然你控制的內容形成了「孩子」組件,您不需要在傳遞變量。

public class ParentComponent { 

} 

從子組件內控制佈局組件(父級)的內容。

<t:ParentComponent xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter" t:content="text/html; charset=utf-8"> 
    body of c1 1, 2, 3 
</t:ParentComponent>