如何将继承设计中的下一个示例转换为tapestry 5中的合成设计?
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"/>
提前致谢。
答案 0 :(得分: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>