(转载)Tapestry最新版5.1.0.5教程(十):页面间传递多个参数
在tapestry5中,在页面之间传递基本有3种方法:
1、存放在Session中
2、使用@Persist进行持久化
3、使用页面context来传递参数。
其中1和2都需要将数据存放在Session中,相对来说系统的开销比较大。尤其是多用户高并发情况下,对于性能可能会有一定的影响。
使用页面Context来传递则需要在开发时写一些代码,增加了一些开发量,显得没有前两种方法方便。
第3种方法的实现是需要在页面中添加onActivate和onPassivate方法来完成页面参数的传递。
我们先来看一下其背后的故事:
举个例子,比如说我们有两个页面,第一个是查询条件输入页面input,另一个是查询结果输出页面output。input页面中有两个查询条件,起始时间dateFrom和终止时间dateTo
在Input.java中,我们可以很直观地这样写:
@InjectPageprivate Output output;@Propertyprivate String dateFrom;@Propertyprivate String dateTo;Object onFormSubmit() { output.setDateFrom(dateFrom); output.setDateTo(dateTo); return output;}
private List<String> paramList;public void setParamList(List<String> paramList) { this.paramList = paramList;}public List<String> getParamList() { return paramList;}List<String> onPassivate() { return paramList;}void onActivate(String dateFrom, String dateTo) { this.dateFrom = dateFrom; this.dateTo = dateTo;}private String dateFrom;private String dateTo;
Object onFormSubmit() { List<String> list = new ArrayList<String>(); output.setParamList(list); return output;}