最近写了个书店的程序,后台分页中的上一页,下一页等都用的是按钮,写了好多JS代码,弄的很晕,在BookManager
层中,为了方便搜索,把分页搜索的方法写成了这样
* keyword 表示搜索关键字
* bookCategoryId 表示图书分类ID
* pageNo 当前页
* pageSize 页面大小
*/
public list getPageBooks(String keyword ,int bookCategoryId,int pageNo,int pageSize){}
由于在添加,修改的时候用到了bookCategoryId的参数,所以每次添加或是更新图书之后调用上面的方法时使得
ActionForm中的bookCategoryId都有值,所以分页显示的不是所有图书,而是分类的图书,很郁闷,后来在网上查查
问题,才发现原来在配置struts-config.xml中的action里有项是scope,用来设置ActionForm的生命周期,包括request
与session两个值,系统默认是session。于是我显示的设置了scope=“request”,这样就可以显示全部图书了。呵呵,
原来学struts时没注意这知识点,后悔啊 ,以后注意。
同时在网上找到了一个手动清除ActionForm的代码,一下贴出来与大家分享
//清除ActionForm
if (mapping.getAttribute() != null) {
if ("request".equals(mapping.getScope())) {
request.removeAttribute(mapping.getAttribute());
}else {
HttpSession session = request.getSession();
session.removeAttribute(mapping.getAttribute());
}
}