@kevinZheng
2015-07-20T12:59:01.000000Z
字数 2000
阅读 3090
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组件类型、属性,在模板中引用定义的组件。
总结:最好用第三种形式,尽量保持模版的纯净
@InjectPage
private About about;
@Component
private 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持久化变量
@Persist
private 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 代码:
@Property
private 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 {
@Property
private String name;
@Property
private 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;
}
}