电子商务系统的设计与实现(十):DWZ框架与第三方分页组件整合

晚上,就是刚刚,在后端管理系统中使用DWZ框架。
 先是,直接使用官网网站的Demo,dwz-jui,与编程语言无关的纯静态的那个原始项目。

很快就搭建好了左侧菜单,打开菜单后,出现Tab页面,然后显示目标页面的内容。

然后,就去关注表格分页部分。

DWZ自带的分页组件,感觉太麻烦了,一方面分页分成了4个部分显示,主要包括:
pagerForm,查询条件
pagerHeader,分页表格的头部
pagerContent,分页表格的正文
panleBar,分页条数栏目。

另一方面,分页html和JS中,需要显示后端的变量。
表格正文的list集合和分页参数都需要从后端,比如Java上下文变量中获取。见下面的例子:

<form id="pagerForm" method="post" action="demo_page1.html">
	<input type="hidden" name="status" value="${param.status}">
	<input type="hidden" name="keywords" value="${param.keywords}" />
	<input type="hidden" name="pageNum" value="1" />
	<input type="hidden" name="numPerPage" value="${model.numPerPage}" />
	<input type="hidden" name="orderField" value="${param.orderField}" />
</form>

<div class="pageHeader">
	<form onsubmit="return navTabSearch(this);" action="demo_page1.html" method="post">
	<div class="searchBar">
		<table class="searchContent">
			<tr>
				<td>
					我的客户:<input type="text" name="keyword" />
				</td>
				<td>
					<select class="combox" name="province">
						<option value="">所有省市</option>
					</select>
				</td>
				<td>
					建档日期:<input type="text" class="date" readonly="true" />
				</td>
			</tr>
		</table>
		<div class="subBar">
			<ul>
				<li><div class="buttonActive"><div class="buttonContent"><button type="submit">检索</button></div></div></li>
			</ul>
		</div>
	</div>
	</form>
</div>
<div class="pageContent">
	<div class="panelBar">
		<ul class="toolBar">
			<li><a class="add" href="demo_page4.html" target="navTab"><span>添加</span></a></li>
		</ul>
	</div>
	<table class="table" width="100%" layoutH="138">
		<thead>
			<tr>
				<th width="120">客户名称</th>
			</tr>
		</thead>
		<tbody>
			<tr target="sid_user" rel="1">
				<td>天津农信社</td>
			</tr>

		</tbody>
	</table>
	<div class="panelBar">
		<div class="pages">
			<span>显示</span>
			<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
				<option value="20">20</option>
			</select>
			<span>条,共${totalCount}条</span>
		</div>
		<div class="pagination" targetType="navTab" totalCount="200" numPerPage="20" pageNumShown="10" currentPage="1"></div>
	</div>
</div>

因此,我不太想使用这个自带的分页。
     以前,秒针某个同事写了分页组件,我改造了下,想今后自己维护一个版本。于是,在后端使用的是自己的分页组件fugrid.js。
但是,遇到了一个问题。 要么是,自己的grid组件报错,要么是dwz的dwz.ui.js的initUI函数报错。
分析问题:
 单独在新页面中,访问grid组件所在的页面,可以正常显示,说明代码是没有问题的。
 使用自带的table,initUI函数也没有报错。

继续分析:
  发现initUI方法会调用一些方法,$("div.panel", $p).jPanel();然后提示某某没有jPanel方法,最终导致grid组件卡死了。grid组件的代码,我不想修改,dwz组件的代码,还没有看懂,也不想修改,修改了今后升级就麻烦一些。
   我尝试了一种办法,既然是由于dwz报错导致grid组件一直卡死,如果捕获这个错误了?

  try{
		initUI();
		}catch(e){
			console.warn(e);
		} 

加上try-catch块,还是报错。难道是缓存?
<script src="static/framework/dwzjs/dwz.ui.js?a=1" type="text/javascript"></script>
加上一个a参数,防止缓存,发现还是报错。

换种方式:

function initUI(_box){
	var $p = $(_box || document);
	try {
	   $("div.panel", $p).jPanel();
       }catch(e){
			console.warn(e);
		}
}


在initUI方法内部,捕获这个异常,终于OK啦。

不需要修改dwz的业务逻辑,不需要改动grid组件的代码。
如果dwz升级了,只需要升级之后,再增加捕获异常的代码就行了,不用去关心dwz组件的逻辑。

时间: 2024-10-27 09:08:32

电子商务系统的设计与实现(十):DWZ框架与第三方分页组件整合的相关文章

电子商务系统的设计与实现(十二):技术选型

Web前端 最标准化的3项技术:HTML.JavaScript.CSS.   其中,HTML主要使用4,JS框架主要使用jquery,CSS框架主要使用Bootstrap. 好处: 简单易学,没有什么学习成本.最标准化的技术,在一个项目中积累经验,在另外一个项目中也可以持续使用.  而Angular等前端框架,不太熟悉,是否有较广泛的适用场景.今后可以考虑学习下. 后端管理系统,前端采用开源的dwz框架,表格分页组件使用自己写的,其它菜单.对话框等常用组件使用dwz自带的.后端渲染界面,而非前端

电子商务系统的设计与实现(十四):菜单高亮

菜单高亮,几乎是所有Web网站都需要的一个功能. 这个功能,说起来,简单得很,给当前页面的菜单增加一个高亮样式,删除其它菜单的高亮样式. 如果只高亮1个页面的菜单, 太简单了,但是如果菜单和页面比较多,就产生了争议. 第1种方式:每个页面单独高亮. <li id="indexli"><a href="${base}/">首页</a></li> <script type="text/javascript&

电子商务系统的设计与实现(七):前后端系统UI设计的一些思考

对于大部分开发者来说,写界面是最烦人的事.我想,开发者最初诞生,以及我们在大学学习的时候,更加侧重的是程序设计和逻辑思维,而不是界面.界面更象是艺术,艺术和程序设计是两回事. 我个人还是想成为全栈式开发工程师,所以基本的UI还是必须能够搞定的. 就目前正在做的电子商务malling系统, 主要有2个系统需要做界面,前端商城和后端管理系统. 前端系统UI 在京东.淘宝.当当等购物网站中,我更偏好京东的设计,红色字体,用户体验也很好.商品分类和搜索框,选择商品,加入购物车.核心购物业务之外,就是个人

电子商务系统的设计与实现(五):账务系统的功能接口设计

电商系统.p2p网贷系统.第三方支付都可以有自己的账务系统,账务系统与用户系统可以完全独立,不需要用户ID等信息,只提供给其它系统若干接口.服务可以用WebService的方式实现,对内提供服务非常方便,调用接口,就要调用普通的API一样.也可以做成HTTP的方式,外部使用相对麻烦一些.疑问:WebService提供的接口,可以直接用HTTP的方式调用么? 账务系统的功能接口设计 1.开户  可选输入:用户ID.账户资金类型(人民币.美元)  功能描述:创建一个账户.  理论上不需要存入用户的I

电子商务系统的设计与实现(六):账务系统服务化的好处和坏处

账务系统服务化,参考了公司Boss的设计.不过,随着思考的深入,发现账务系统服务化也有不少坏处,对一个中小型公司,小技术团队,中小型网站来说. 坏处:1.开发成本增大.  服务化,需要新建一个项目.开发调试的时候,必须保证账务系统一直在运行,因此,部署的时候,账务系统也需要单独部署一次.2.跨系统事务处理起来比较麻烦.  目前,投标的时候,立即需要支付,即把投标和支付2个跨系统的服务,想作为一个事务.但是,目前又没有分布式事务的基础框架.因此,折衷的办法是,把账务这种不可回滚的操作,放在最后一个

电子商务系统的设计与实现(十一):数据库设计

用户相关 malling_user:前端商城系统的用户,用户名.密码等 malling_user_delivery_address,用户的收获地址,一个用户可以有多个收获地址 malling_admin_user:后端系统的用户,与前端系统没有关系 malling_admin_role:后端系统用户的角色,超级管理员.管理员等 malling_admin_user_role:后端系统用户和角色的关联 账务相关  malling_account:用户的资金账户,账户号.可用余额.冻结余额等 mal

电子商务系统的设计与实现(十三):分页组件,从前到后,从JS到Java

一.概述   学习实践Web开发5年多了,直到今天,我才算真正实现了最基本最常用的分页组件. 包括:    a.前端JS异步加载并渲染:    b.前端JSP.Freemarker.Struts标签渲染:    c.后端分页       自己写具体的分页算法和逻辑.       使用Mybatis分页插件. 今天,重点介绍下前端JS异步分页,简短介绍下后端Java提供数据.  二. 关键数据结构 public class PageVo { /** 总记录数 */ protected Intege

电子商务系统的设计与实现(九):后端管理系统功能细化

1.商品管理   1.1创建商品.修改商品.删除商品.商品列表.条件查询   1.2商品分类 2.用户管理    基本资料.收货地址.资金余额 3.订单管理   订单列表.冻结.解冻.无效.修改支付状态等 4.财务管理   充值记录,用户的充值历史记录   提现记录,用户的提现历史记录   账务记录,电商平台方资金总账变动 5.日志管理操作日志:商品创建.订单冻结等后台操作日志.登录日志:什么时候登录搜索日志:记录每一个用户的搜索词日志报表下载 6.后期再做评论管理:用户对商品的评论权限管理:后

电子商务系统的设计与实现(八):前端商城系统功能细化

1.注册和登录用户注册:邮箱.密码用户登录:邮箱.密码一期不做:找回密码等细节功能 2.购物流程   2.1商品分类.商品列表展示 .商品搜索       分类有多级.首页展示若干推荐的商品.输入商品名称可以搜索商品 2.2查看商品        查看一件商品的详细信息     一期不做:关联商品.商品推荐.商品评论.商品星级 2.3加入购物车  加入.删除 2.4生成订单  若干商品,包装成一个订单 2.5支付  第三方支付,财付通.支付宝.盛付通等,使用测试账号,如果有的话 3.个人主页,购