研究:Liferay研究(四)Liferay中进行分页-----------------假分页之二

创建完基本分页的工具类之后,然后就是到action里面的内容了,因为是连接到对方的数据库,所以有些代码省略.在Action中定义如下:

package org.lxh.action;



public class OtherFavoMoreAction extends BaseAction {

	// 测试分页参数

	private static final int DEFAULTLINESIZE = 20;

	private static final int DEFAULTCURPAGE = 1;

	// 每页多少条数据

	private int pagesize;

	// 数据中总记录数

	private int pagetoal;

	// 当前页

	private int curpage;

	// 需要分多少页

	private int totalsplitpage;



	public ActionForward execute(ActionMapping mapping, ActionForm form,

			HttpServletRequest request, HttpServletResponse response)

			throws Exception {

		ConnectionService connectionService = (ConnectionService) this

				.getBean("connectionService");

		Map<String, Object> map = new HashMap<String, Object>();

		ShowControlBean showControl = getShowControl(request);



		try {

			DataCount = Integer.parseInt(request.getParameter("datacount"));

			String startIx = this.getParam(request, "startIx");			

			String maxAssets = this.getParam(request, "maxAssets");

			// 每次要显示多少条记录

			if (StringUtils.isEmpty(maxAssets))

				pagesize = DEFAULTLINESIZE;

			else

				pagesize = Integer.parseInt(maxAssets);

			// 起始页

			String startIx = this.getParam(request, "startIx");

			if (StringUtils.isEmpty(startIx)) {

				curpage = DEFAULTCURPAGE;

				System.out

						.println("first---------------------------" + curpage);

			} else {

				curpage = Integer.parseInt(startIx);

				System.out.println("se---------------------------" + curpage);

			}

			/*----------------------------------------------------------------------------*/

			// 当前页

			List<User> vo = new ArrayList<User>();

			List sqlList = userList.getMoreUser(DataCount);

			// 无数据时取数

			

				for (int i = 0; i < sqlList.size(); i++) {

					User user= new User();

					user= userService.getuser;
                                 	if (user== null)

						continue;

					else

						vo.add(user);

					map.clear();

				}

				// 去掉空值的总记录数

				pagetoal = vo.size();

				totalsplitpage = PageUtil.spiltPage(pagetoal, pagesize);

						// 是否首页

			request.setAttribute("isHomePage", PageUtil.ishomepage(curpage));

			// 是否末页

			request.setAttribute("isLastPage", PageUtil.islast(curpage,

					totalsplitpage));

			// 是否有上一页

			request.setAttribute("isFist", PageUtil.isfirst(curpage));

			// 是否有下一页

			request.setAttribute("isNext", PageUtil.isnext(curpage,

					totalsplitpage));

			// 当前页

			request.setAttribute("curpage", curpage);

			// 一共有多少数据

			request.setAttribute("toal", pagetoal);

			// 要分多少页

			request.setAttribute("pages", totalsplitpage);

			// 每条多少记录

			request.setAttribute("linesize", pagesize);

			// 分页数据

			request.setAttribute("vo", PageUtil.splitPageByListAssetVo(vo,

					pagesize, curpage));

			request.setAttribute("DataCount", DataCount);

			return mapping.findForward("view");

		} catch (Exception e) {

			e.printStackTrace();

			return null;

		}



	}



}

当页面点下一页的时候会跳转到这个action里面然后进行分页的处理,处理完之后返回一个List集合然后再次request到要显示的Jsp页面上去,虽然在Liferay中需要获取sp参数需要调用paramUtil方法取得数值,由于在项目中用的不是基于liferay ext的开发模式,只是利用了portlet的桥接,所以单纯的request.getParameter就可以取到需要的值.上面用到的 getParam是从request中进行处理后再返回的,防止了空指针的异常做出的优化.

 
在jsp中action的传递不再是单纯的输入<%=request.getContextPath()%>/xxxx 指的是Struts中配置的action名字,而需要用到portlet的标签
<portlet:renderURL windowState="normal" portletMode="view" ></portlet:renderURL>
windowState是窗口的大小,portletMode是Portlet的状态,可以选择是显示还是隐藏还是编辑
在portlet中还有个重要的标签就是<portlet:namespace />因为分页跳转是通过JavaScript控制的,但是由于每个portlet对应的JavaScript操作的方式都不一样,所以需要在执行方法的时候加上<portlet:namespace />这个标签,这个标签是代表当前portlet唯一的标识,可以保证该方法和该属性是仅属于当前portlet的
 

你可能感兴趣的:(liferay)