文章 上一篇/下一篇功能开发

核心代码
/**
	 * 获取上一篇,下一篇文章信息
	 */
	@SuppressWarnings("unchecked")
	public void getUpNextInfo(NewsPublicationInfoViewForm newsPublicationInfoViewForm,int infoId,int cateId,NewsPublicationInfoHandler handler)throws Exception{
		//	根据文章加载上一篇,下一篇文章信息 start  update by KF45113     date 2011-5-18
		NewsPublicationInfoVO infoVO = new NewsPublicationInfoVO();
		infoVO.setCateId(cateId);
		try {
			// 定义一个infoList 存放查询得到的文章信息
			List infoList =  handler.selectInfoIdByCate(infoVO);
			// 定义一个infoIdList 存放文章ID 注:文章一定根据顺序排好序
			List infoIdList = new ArrayList();
			// 定义一个map存放文章信息,避免重复操作数据库
			Map map = new HashMap();
			// 迭代文章信息List
			for (Iterator iter = infoList.iterator(); iter.hasNext();) {
				NewsPublicationInfoVO infoVO_TEMP = (NewsPublicationInfoVO) iter.next();
				// 把刊期所有的文章ID 标题信息放入Map,减少数据库查询操作  key:文章ID value 文章Obj
				map.put(infoVO_TEMP.getInfoId().toString(), infoVO_TEMP);
				// 把刊期所有的文章ID 放入存放文章ID 的List中
				infoIdList.add(infoVO_TEMP.getInfoId().toString());
			}
			if(0<infoIdList.size()){
				// 根据当前文章从List 中获取上一篇文章ID
				// 根据当前文章在infoIdList 中的索引找出上一篇文章的索引
				int upInfoIndex = infoIdList.indexOf(String.valueOf(infoId))-1;
				// 根据当前文章在infoIdList 中的索引找出下一篇文章的索引
				int nextInfoIndex = infoIdList.indexOf(String.valueOf(infoId))+1;
				try {
					if(null!=infoIdList.get(upInfoIndex)){
						// 根据上一篇文章的索引获取上一篇文章的ID
						String sInfoId = (String) infoIdList.get(upInfoIndex);
						// 根据上一篇文章ID 从Map 中获取上一篇文章信息
						newsPublicationInfoViewForm.setUpInfoVO((NewsPublicationInfoVO)map.get(sInfoId));
					}
				} catch (Exception e) {
					newsPublicationInfoViewForm.setUpInfoVO(null);
				}finally{
					try {
						if(null!=infoIdList.get(nextInfoIndex)){
							// 根据当前文章从List 中获取下一篇文章ID
							String nextInfoId = (String) infoIdList.get(nextInfoIndex);
							// 根据下一篇文章ID 从Map 中获取下一篇文章信息
							newsPublicationInfoViewForm.setNextInfoVO((NewsPublicationInfoVO)map.get(nextInfoId));
						}
					} catch (Exception e) {
						newsPublicationInfoViewForm.setNextInfoVO(null);
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 根据文章加载上一篇,下一篇文章信息 end  update by KF45113     date 2011-5-18
	}

猜你喜欢

转载自q530414675.iteye.com/blog/1050394