一.问题阐述
根据不同的输入条件,查询出符合要求的结果(records),放到list中,并将该list赋值给t:dataTable,在前台显示出来。当第一次搜索出来的records条数过多时,用t:dataScroller进行分页。
问题是当user点击t:dataScroller查看完第2或3页(即非第一页)以后,再输入不同的查询条件,想查看其他的records,这时 list会在back bean里被附上新值,并用t:dataTable显示在页面上,而此时t:dataScroller默认显示的页码不是第一页,而是上一次查看时显示的 页码。而我们希望t:dataScroller默认显示页码一。
二.解决办法
这里有两种解决办法。第一种,利用t:dataScroller的binding属性,在后台bean里规定t:dataScroller显示的页码。
第二种,是不设置t:dataScroller的binding属性,直接从backbean中获取t:dataScroller元素,并在每次所用道德查询方法中设置其显示的页码。
三.具体代码
A、第一种方法:
1.页面代码:
2.后台bean代码:
B、第二种方法:
1、页面代码
2.后台bean代码:
四.注意事项
值得注意的是,在方法一中,一旦用了binding,不要给t:dataScroller附id属性,不然,如果使用firefox3.0的浏览器,tomcat会在后台会报component id重复的异常,但在页面上不会有任务异常。IE,google等浏览器则不受影响。并且第一种方法不是很稳定,有时即使不给t:dataScroller附id属性也会报component id重复的异常。因此,这里建议用
第二种方法。之所以列出第一种方法,是因为毕竟是自己智慧的结晶,虽然是失败的作品,但也许其他读者仍可以从中找到有价值的东西。
这里还需要强调一点,在第二种方法中,t:dataScroller必须放在t:dataTable的footer里,不然是从后台取不到HtmlDataScroller的。