在公司的项目中用到了EC/ET,后来说要重新移植一下该项目,于是在本人的鼓动下,决定使用jmesa来替代,由于jmesa的前身就是EC,所以用法也比较相似,再加上之前也花过一些时间用了一下,因此自己还是比较有信心的。但经过这一个多月的深入接触,发现jmesa还有许多地方需要改进,由于官方好像也只有一个人维护(而且也不积极),所以也不能指望官方来修护了。于是不得不花些时间去看看它的源码,还一些不满意的地方进行修改。总体来说,jmesa功能还是比较强大的,要玩得转它,就相当于学习一种新框架,由于问题比较多,时间也有限,因此先暂时写一下在jmesa中增加“删除”的功能。由于jmesa本身并没有提供删除的功能,于是需要手动的操作来完成,显示部分的代码如下:
<jmesa:htmlColumn title="操作" editable="false" filterable="false" sortable="false">
<a href="javascript:void(0);" onclick="deleteUser('user_table1','${bean.id}');">删除</a></jmesa:htmlColumn>
之所以要这么做而不是直接用URL来实现删除,是因为删除时应当保留当前的页数,如在第二页删除了一条记录,那么删除以后也应该回到第二页才对,要实现此功能,需要用到jmesa的分页功能,而这些参数的获取及赋值也需通过JS来实现,因此这样做似乎更合理一些。在JS部分,可以这样:
<script type="text/javascript">
function onInvokeAction(id) {
$.jmesa.setExportToLimit(id, '');
$.jmesa.createHiddenInputFieldsForLimitAndSubmit(id);
}
function onInvokeExportAction(id) {
var parameterString = $.jmesa.createParameterStringForLimit(id);
location.href = '${pageContext.request.contextPath}/user/user.mvc?method=showUsers&id=user_table2&' + parameterString;
}
function deleteUser(tableid,id){
deleteWithLimitInfoForJSP("${pageContext.request.contextPath}/user/user.mvc",tableid,id);
}
</script>
上面就加了一个deleteUser方法,然后在相应的jmesa.js加入以下代码:
function createParameterStringForLimit(id) {
return jQuery.jmesa.createParameterStringForLimit(id);
}
function deleteWithLimitInfoForJSP(deleteurl,tableid,id){
var currentpage=jQuery.jmesa.getLimitPage(tableid);
jQuery.jmesa.setPageToLimit(tableid,currentpage);
jQuery.ajax({
type: "get",
url: deleteurl,
data: "method=ajaxDelete&id="+id,
success: function(msg) {
alert("删除成功!");
createHiddenInputFieldsForLimitAndSubmit(tableid);
}
});
}
/*********** Filter ***********/
....
即添加了deleteWithLimitInfoForJSP方法,通过其前后的代码,也能知道该段代码该放在什么地方,此代码就是执行删除操作的代码,通过调用jquery的AJAX操作来实现,然后调用控制器的ajaxaDelete方法实现删除,这个方法还用到了一个getLimitPage方法,这个方法的代码放在jquery.jmesa.js中:
onInvokeExportAction : function (id) {
var tableFacade = this.getTableFacade(id);
var f = window[tableFacade.onInvokeExportAction];
if ($.isFunction(f) !== true) {
throw tableFacade.onInvokeExportAction + ' is not a global function!';
} else {
f(id);
}
},
getLimitPage : function(tableid,id) {
var limit = this.getTableFacade(tableid).limit;
return limit.page;
}
};
/*********** Objects and Prototype Functions ***********/
.
之所以把前后的代码放出来,是为了确定其放的位置,这些代码其实是参照了网上的实现,只是那篇博客讲得并不完整,所以故重新把它整理写了下来,这样一个基本的删除操作就算完成了。
关于jmesa的问题还有很多,以后有空再把其它的写下来。
分享到:
相关推荐
jmesa.jar jmesa.jar
最近做一个应用的时候用到了Jmesa(至于Jmesa的详细介绍,请Google),但是关于Struts2和Jmesa的资料特别少,费尽周折总算让他们两个正常运行了,现在把使用他们的一些心得写下来与大家分享
这是一个jmesa的例子 没有jar包 详情见 http://writeblog.csdn.net/PostList.aspx 初探jmesa
介绍ExtremeTable的下一代Jmesa,这个项目的目的是为开发者提供更有效的表格展现的API,而不是简单的TagLib。
jmesa表格标签 依赖包 jmesa-3.0.jar
jmesa-2.4.4.jar 有源码
jmesa2.3.4非常好的API,推荐使用
jmesa-snapshot.jar jmesa用到的jar
jmesa 所需要的 完整jar包,非常的全
jmesa-3.0.4 最新版 供大家学习下载
jmesa 。。。。。。。。。。。。。
这是一篇关于如何使用jmessa的说明文档
使用jmesa做的分页,导出可以导出文txt,pdf,excel等格式,采用servlet 没有使用其他的框架,对还没有学会框架的比较好理解
官方提供的另外一种方法的实现。 有排序和过滤。 而且能支持大数据量的查询。
使 jmesa支持ajax的JS源码 描述>=20个字符,不支持HTML标签。
jmesa-2.3_examples.war-source.zipjmesa-2.3_examples.war-source.zipjmesa-2.3_examples.war-source.zip
jmesa入门实例源码
NULL 博文链接:https://zengguo1988.iteye.com/blog/699798
一个Struts1.2+Spring2.5+Hibernate3.2+Jmesa2.4.3+JmesaTag实现的强大分页控件例子 里 面有action实现分页和标签实现分页2个例子 action实现的分页 包括了表头排序,导出为PDF,TXT, excel等格式 jar包和数据库...
jmesa-3.0.4.zip,包含了jmesa所需要的.jar包和源代码,可以好好的研究一下