AppFuse Display Tag
来源:百度文库 编辑:神马文学网 时间:2024/04/28 22:36:54
AppFuse使用做为内容显示。Display Tag的分页默认是按全量数据自动进行分页。如果数据量大的话,就很耗费性能。
可以参考。
如果少量数据可以通过Tag的参数进行分页,大数据量的化,可以采用Valuelist pattern,对象继承org.displaytag.pagination.PaginatedList实现分页和排序。
那么什么是Valuelist pattern?
Valuelist patten(值列表处理器)是J2EE核心模式中的一种。简单点说明就是,Client(客户端)通过访问ValueListHandler(值列表处理器)获得ValueListIterator(值列表迭代器),ValueListHandle则通调用DataAccessObject(数据访问对象)。
在我们的实现里,Client应该是JSP,ValueListHandle则是Action,DataAccessObject最后的实现是HibernateDAO。
Client(companyList.jsp):
1
2 3 paramId="companyId" paramProperty="companyId" titleKey="company.companyId"/>
4
5
6 checked="checked"/>
7
8
9
10
11
12
1314 key="companyList.companies"/>
15
16 .xls
17 .csv
18 .pdf
19
ValueListHandle(CompanySearchAction):
1 public String search() {
2 HttpServletRequest request = getRequest();
3 String strPage = request.getParameter("page");
4 int page = strPage == null ? 1 : new Integer(strPage).intValue();
5
6 PaginatedListHelper ph = new PaginatedListHelper();
7 int size = ph.getObjectsPerPage();
8 int index = (page-1)* size;
9 companies = companyDao.find(company, index,size);
10
11 int count = companyDao.getSize(company);
12
13 ph.setFullListSize(count);
14 ph.setList(companies);
15 ph.setPageNumber(page);
16
17 request.setAttribute("ph", ph);
18
19 return SUCCESS;
20 }
DataAccessObject(CompanyDaoHibernate):
1 public int getSize(final Company company) {
2 String queryString = "select count(*) from Company where 1 = 1";
3 ArrayList values = new ArrayList();
4 if (company.getCompanyName() != null && !company.getCompanyName().equals("")) {
5 queryString += " and companyName like ?";
6 values.add("%" + company.getCompanyName() + "%");
7 }
8
9 if (company.getCompanyType().getTypeId() != null) {
10 queryString += " and companyType = ?";
11 values.add(company.getCompanyType());
12 }
13
14 Object[] objects = values.toArray();
15
16 List list = this.getHibernateTemplate().find(queryString, objects);
17 Long count = (Long) list.get(0);
18 return count.intValue();
19 }
20
21 public List find(final Company company, final int index, final int size) {
22
23 String sql = "from Company where 1 = 1";
24 if (company.getCompanyName() != null && !company.getCompanyName().equals("")) {
25 sql += " and companyName like :companyName";
26 }
27 if (company.getCompanyType().getTypeId() != null) {
28 sql += " and companyType = :companyType";
29 }
30 final String queryString = sql;
31
32 return (List) getHibernateTemplate().execute(new HibernateCallback() {
33 public Object doInHibernate(Session session)
34 throws HibernateException {
35
36 Query query = session.createQuery(queryString);
37
38 if (company.getCompanyName() != null && !company.getCompanyName().equals("")) {
39 String companyName = "%" + company.getCompanyName() + "%";
40 query.setParameter("companyName", companyName);
41 }
42 if (company.getCompanyType().getTypeId() != null) {
43 query.setParameter("companyType", company.getCompanyType());
44 }
45
46 query.setFirstResult(index).setMaxResults(size);
47 return query.list();
48 }
49 });
50 }
可以参考。
如果少量数据可以通过Tag的参数进行分页,大数据量的化,可以采用Valuelist pattern,对象继承org.displaytag.pagination.PaginatedList实现分页和排序。
那么什么是Valuelist pattern?
Valuelist patten(值列表处理器)是J2EE核心模式中的一种。简单点说明就是,Client(客户端)通过访问ValueListHandler(值列表处理器)获得ValueListIterator(值列表迭代器),ValueListHandle则通调用DataAccessObject(数据访问对象)。
在我们的实现里,Client应该是JSP,ValueListHandle则是Action,DataAccessObject最后的实现是HibernateDAO。
Client(companyList.jsp):
1
2
4
5
6 checked="checked"/>
7
8
9
10
11
12
13
15
16
17
18
19
ValueListHandle(CompanySearchAction):
1 public String search() {
2 HttpServletRequest request = getRequest();
3 String strPage = request.getParameter("page");
4 int page = strPage == null ? 1 : new Integer(strPage).intValue();
5
6 PaginatedListHelper ph = new PaginatedListHelper();
7 int size = ph.getObjectsPerPage();
8 int index = (page-1)* size;
9 companies = companyDao.find(company, index,size);
10
11 int count = companyDao.getSize(company);
12
13 ph.setFullListSize(count);
14 ph.setList(companies);
15 ph.setPageNumber(page);
16
17 request.setAttribute("ph", ph);
18
19 return SUCCESS;
20 }
DataAccessObject(CompanyDaoHibernate):
1 public int getSize(final Company company) {
2 String queryString = "select count(*) from Company where 1 = 1";
3 ArrayList
4 if (company.getCompanyName() != null && !company.getCompanyName().equals("")) {
5 queryString += " and companyName like ?";
6 values.add("%" + company.getCompanyName() + "%");
7 }
8
9 if (company.getCompanyType().getTypeId() != null) {
10 queryString += " and companyType = ?";
11 values.add(company.getCompanyType());
12 }
13
14 Object[] objects = values.toArray();
15
16 List list = this.getHibernateTemplate().find(queryString, objects);
17 Long count = (Long) list.get(0);
18 return count.intValue();
19 }
20
21 public List find(final Company company, final int index, final int size) {
22
23 String sql = "from Company where 1 = 1";
24 if (company.getCompanyName() != null && !company.getCompanyName().equals("")) {
25 sql += " and companyName like :companyName";
26 }
27 if (company.getCompanyType().getTypeId() != null) {
28 sql += " and companyType = :companyType";
29 }
30 final String queryString = sql;
31
32 return (List) getHibernateTemplate().execute(new HibernateCallback() {
33 public Object doInHibernate(Session session)
34 throws HibernateException {
35
36 Query query = session.createQuery(queryString);
37
38 if (company.getCompanyName() != null && !company.getCompanyName().equals("")) {
39 String companyName = "%" + company.getCompanyName() + "%";
40 query.setParameter("companyName", companyName);
41 }
42 if (company.getCompanyType().getTypeId() != null) {
43 query.setParameter("companyType", company.getCompanyType());
44 }
45
46 query.setFirstResult(index).setMaxResults(size);
47 return query.list();
48 }
49 });
50 }
AppFuse Display Tag
tag
tag
Appfuse框架
display是什么?
tag tag tag 啦啦啦
AppFuse QuickStart - Chinese - AppFuse 2 -?Co...
appfuse配置文件解读
Phage Display Discovery Tool
display:inline怎么用?
DISPLAY环境变量的作用
CSS display 属性
什么是Tag?
什么是Tag?
Tag是什么?
什么是Tag?
tag是什么意思
名人名言Tag
TAG展示
什么是TAG
什么是Tag?
tag: 沙漠
什么是Tag?
使用 AppFuse 的七个理由