@kevinZheng
2015-07-20T12:59:01.000000Z
字数 2000
阅读 3233
tapestry5.3 笔记 学习
好记性不如烂笔头。方便以后学而时习之。
有三种方式:
1. Explicitly in the template.(在页面模板中直接定义)
格式:<t:textfield t:value="message"/>
定义一个textfield 的Tapestry组件,绑定message属性。
2. Invisibly in the template. (在页面模板中隐藏定义)
格式:<input type="text" t:type="textfield" t:value="message"/>
把Tapestry组件Textfield绑定到HTML组件Input中。
3. In the page class (在页面类中定义Tapestry组件)
格式:(页面类定义)
@Component ( parameters = {"value=message"})private TextField theTextBox;
(页面模板引用)<input type="text" t:id="theTextBox"/>
在页面类中定义Tapestry组件类型、属性,在模板中引用定义的组件。
总结:最好用第三种形式,尽量保持模版的纯净
@InjectPageprivate About about;@Componentprivate ActionLink aboutAction;//ActionLink的后台事件处理,后台传递参数Object onActionFromAboutAction(){about.setUp(message);return about;}
tml 模版代码格式:
<a t:id="aboutAction">turn to about page and show message!</a>
about 页面后台java 代码:
//自动session持久化变量@Persistprivate String message;//从别的页面传递参数入口方法public void setUp(String message){this.message=message;}
@Component ( parameters = {"page=about","context=message"})private PageLink aboutPage;
前台模版:
<a t:id="aboutPage" >about page</a>
about 页面后台java 代码:
//框架自动调用下面方法,通过url完成参数传递void onActivate(String message) {this.message = message;}String onPassivate(){return message;}
页面后台java 代码:
@Propertyprivate String[] param={"123","234"};@Component(parameters={"page=about","context=param"})private PageLink aboutPage;
前台模版:<a t:id="aboutPage">about page</a>
about 页面java 代码:
import org.apache.tapestry5.annotations.Property;public class About {@Propertyprivate String name;@Propertyprivate String message;//参数顺序要跟传递进来的params数组顺序一致void onActivate(String name, String message) {this.name = name;this.message = message;}String[] onPassivate() {return params;}//这个数组来存、取多个参数,List也可以实现同样功能。列表或者数组匿名也可以。private String[] params;public void setParams(String[] params) {this.params = params;}public String[] getParams() {return params;}}
