增加了 style="width: ???px"来解决
已修改的相应页面为:
acl/user目录下的 add.jsp,edit.jsp,view.jsp
acl/role目录下的 add.jsp,edit.jsp,conf.jsp
acl/resource目录下的add.jsp,edit.jsp
system/cron目录下edit.jsp,view.jsp
2.2.2 2014.03.05
1.新增查询无结果或查询返回数据错误,页面隐藏分页栏,并显示"没有检索到符合条件的数据!"
2.css新增taiji_not_found,用于显示"没有检索到符合条件的数据!",美工后期可以进行美化
3.pager.jsp做了相应的改变
4.改进点击表头进行排序,(此排序是数据库重排)。
5.sample-role项目新增点击表头排序示例,参见系统管理-调度日志
A.修改查询Model继承自 OrderModel,OrderTimeModel,OrderPaginModel,OrderTimePaginModel,
如:public class ScheduleLogQueryModel extends OrderTimePaginModel
B.页面在表头添加class="taiji_sortable {orderBy:'待排序字段名称',desc:true|false}"
如:
C.ManagerImpl.java往DaO多传一个参数 从model中获取 qm.toOrderSql();
如:logDao.queryPage(qm.getPageNo(), qm.getPageSize(),qm.toOrderSql());
D.Dao实现类中在最后判断orderSql是否有值,如果有就添加到查询hql中
String countHql = COUNT_ID + hql.toString();
if(StringTools.hasText(orderSql)){
hql.append(orderSql);
}else{
hql.append(" order by startTime desc");
}
2.2.1 2014.03.04
1.修复了弹出层关闭,验证提示信息不能自动消除的BUG(目前的解决方案需要进一步的优化)
2.2.0 2014.02.27
1.(添加、修改、查询)新增placeholder功能。
2.(添加、修改、查询)改变表单验证方式为后台验证,验证失败信息提醒方式为仿html5页面验证失败提醒方式。
3.(添加、修改、查询)取消前台验证,去除对jquery.validate.js的引用。
4.(添加、修改、查询)取消前台验证,去除对jquery.validate.manage.js的引用。
5.分页采用自己的插件,取消对jquery.pager.js的引用。
2.1.2 2014.01.02
1.修正taijiJump的问题
2.修正分页的的BUG
2.1.1 2013.10.31
1.为兼容以前的版本,对add函数进行了修补
2.1.0 正式发布版 2013.10.25
1.修补查询到0条记录是分页显示不正常的BUG
2.修补添加、删除之后总记录数不变化的BUG
3.修补批量删除传值的BUG
4.代码优化
2.0.13 RC4 2013.09.16
1.配合新样式,修改部分代码
2.0.12 RC3 2013.08.29
1.修正taijiJump的表现,不再跳转,直接将返回的内容显示在当前页面
2.0.11 RC2 2013.08.26
1.增加$.Taiji.taijiJump(form,$button,options)方法。[[目前还未提供对表单中含file字段的支持]]。
A.参数说明如下:
form 表单。
$button 提交按钮,操作期间会被禁用,防止反复提交。
options 其他需要设置的ajaxSubmit参数。
B.应用与如下场景:
a.定位在前台页面
b.表单页面异步提交表单;成功则跳转到指定的URL,失败则停留在当前页面。
C.简单示例
a.表单页面如下:
$(“#form”).validate({
rules:{.......},
submitHandle:fucntion(form){
var options = {.....};
$.Taiji.taijiJump(form,$(“#submit”),options);
}
});
$(“#submit”).click(function(){
$(“#form”).trigger(“submit”);
});
b.Controller
@ReqestMapping(....);
public void do(.....){
.....
addSuccess(reponse,”操作成功");
response.setHeader("Location", jumpUrl);
}
2.0.10 RC1 2013.8.9
1.修复弹出层信息提示不显示的BUG
2.0.9 beta9 2013.08.05
改进:
1.列表点击列头进行服务器端排序
此次对代码进行了比较大的改动,主要是对 manage.jsp 和queryResult.jsp进行了改动。
所以不建议在已有项目中进行改动。
分别如下:
A.manage.jsp页面的
C.可点击排序的 表头,加上class="taiji_sortable {'sortField':'userName'}"
D.后台Controller接收 sortField(值为class中配置的值,如上例为:userName)和sortType(值为desc或asc)字段,
2.修正添加、修改带file字段的BUG,
带file字段的添加、修改的result.jsp页面进行如下修改:
2.1以前result.jsp如下的内容:
<%@ include file="row.jsp"%>
2.0.10将作为2.0的正式版发布。
2.0.8 beta8 2013.07.12
改进:
1.代码全部重构,将除了核心的查询,分页,选中效果留在了core.js中,
其他全部拆分为单独的方法中, 作为插件,
2.插件方法更新,经过一段时间的思考,对以前的插件方法进行了改进。
目前的插件格式如下:
(function($){
$.Taiji.extendMethod({
//插件名字,用于包装config,在插件内部就可以用this.settings.pluginName.className引用了
name:'pluginName',
//是否使用弹出层,默认不使用,目前有add,edit,view,popupRemove使用
userNyroModal:true,
//通过响应哪些事件(标准事件click,change等)来实现插件功能
event:{
//click事件
"click":{
//"className",在那个拥有this.settings.pluginName.className的class的链接上响应事件,
//"_handlePluginClick",处理此事件的函数名
"className":"_handlePluginClick"
},
//change事件
"change":{
//"otherClassName",在那个拥有this.settings.pluginName.otherClassName的class的链接上响应事件,
//"_handlePluginChange",处理此事件的函数名
"otherClassName":"_handlePluginChange"
}
//more..
},
//自定义事件,目前自定义事件需要在 包装的 div上触发, $(this.currentTarget).trigger("taijiPluginPost");
customEvent:{
//"taijiPluginPost",自定义的事件名
//"_handlePluginPost",此事件的处理函数名
"taijiPluginPost":"_handlePluginPost"
},
//需要追加到taiji上的方法,主要是各种事件处理函数。
eventHandler:{
//处理函数
_handlePluginClick:function(){},
//处理函数
_handlePluginChange:function(){},
//处理函数
_handlePluginPost:function(){}
},
//可配置项,可以通过this.settings.pluginName.xxxx引用
config:{
//可以通过this.settings.pluginName.className引用
className:".taiji_plugin",
//可以通过this.settings.pluginName.otherName引用
otherClassName:'.taiji_pluginOther'
}
});
});
2.0.7 beta7 2013.07.08
改进:
1.修正add,edit,view弹出页面出现了个关闭按钮的BUG。
2.修改多级弹出之后,后续操作有问题的BUG。
3.将add,edit,popupRemove页面的调用方式进行了修改,
add页面,不再使用$.taijiAddSubmit(form,options)的方式,
改为$("myManage").triggerHandler("taijiAddPost",[form,options]);的方式
edit页面,不再使用$.taijiEditSubmit(form,options)的方式,
改为$("myManage").triggerHandler("taijiEditPost",[form,options]);的方式
popupRemove页面,不再使用$.taijiPopupRemoveSubmit(form,options)的方式,
改为$("myManage").triggerHandler("taijiPopupRemovePost",[form,options]);的方式
原有的调用方式已经不推荐使用了,将在未来的某个版本中移出。
4.根据jQuery官方文档,bind,unbind方法将在未来的版本被弃用,在我们项目中用on,off方法替换。
2.0.6 beta6 2013.07.01
改进:
1.所有的callback方式已经被抛弃,将在未来的版本得不到支持了
如下代码$("#myManage").taiji();
search成功之后,将在容器元素myManager上触发 taijiSearchSuccess事件
add成功之后,将在容器元素myManager上触发 taijiAddSuccess事件
edit成功之后,将在容器元素myManager上触发 taijiEditSuccess事件
remove成功之后,将在容器元素myManager上触发 taijiRemoveSuccess事件
operate成功之后,将在容器元素myManager上触发 taijiOperateSuccess事件
multiRemove成功之后,将在容器元素myManager上触发 taijiMultiRemoveSuccess事件
update成功之后,将在容器元素myManager上触发 taijiUpdateSuccess事件
topOperate成功之后,将在容器元素myManager上触发 taijiTopOperateSuccess事件
2.为应对第一点改变,现在调用$("#myManage").taiji(),将返回 $("#myManage"),以便可以这样使用:
$("#myManage").taiji().on("taijiSearchSuccess",function(event,responseText){.......});
2.0.5 beta5 2013.06.20
改进:
1.对代码进行了初步的重构,方法多了,方法体短了。但还有进一步提升的空间。
2.修正了 点击弹出层之后,页面还在自动 刷新的BUG。
3.重构代码的时候,增加了注释,可以用 jsdoc生成初步的API说明
4.显示信息提出来
5.对多处使用的数据,提出到常量
6.减少属性查找,比如this.settings.search.formClassName 使用局部属性 searchFormClassName来代替
2.0.4 beta4 2013.06.14
改进:
1.新增导出功能(exported)
2.新增topOperate功能,与operate功能有区别,operate用于查询数据行中;topOperate用于查询之外。
3.代码通过了jslint的基本检查,可以考虑进一步严格的检查。
2.0.3 beta3 2013.06.08
改进
1.修正boxtab css报错问题
2.修改下载失败的提示信息不能到页面
3.修正查询表单回车不能查询的BUG,上一个版本的代码好像拷贝的时候弄错了。
4.批量删除提出到外面,为customForm做准备
2.0.2 beta2 2013.06.02
改进
1.增加定时刷新功能,autoRefresh:{enable:true,interval:60000}
2.修正查询表单回车不能查询的BUG
3.提示信息背景色增加了透明效果
4.增加批量删除功能
2.0.1 beta1 2013.05.09
完全重写所有的方法
主要为修复以下一些问题:
1.因为1.2.1升级 jquery.nyroModal.js版本之后,导致了一些问题。
2.可定制性的进一步改进。
3.因为大多数不需要页面排序,去掉了对jquery.tablesorter.js的引用。
4.对相应的依赖插件进行了版本升级。
5.增加了qunit单元测试用例,对所有的功能进行测试。
1.2.1 2012-07-03
改进
【改进内容】
1. 将 stack的默认值从false改为true,以默认支持弹出多层之后,可以分别关闭的模式。
2.Controller父类中增加了BaseValidController,这个类将截获ManagerException和ConstraintViolationException,
所以只要继承自BaseValidController这个父类之后,自己的Controller中就只需要处理正确的情况就可以了,
减少大家的编码量。ManagerException就直接抛出即可。
例如:
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String processAddForm(@Valid @ModelAttribute("pageModel") User user, BindingResult result,
HttpServletRequest request, Model model) throws ManagerException
{
String id = userManager.add(user);
addSuccess(model, "添加用户成功");
model.addAttribute("vo", userManager.findById(id));
super.addSysLog(request, "添加用户({})成功", user.getName());
return "acl/user/result";
}
【注意事项】
1.如果弹出多个层,请将每层中的 关闭按钮的class设为不同的值,以免冲突
2.如果弹出层里也需要有查询页面,请将每个查询页面中的 form的name、id属性和查询按钮的id属性 设为不同的值,
例如:
$("#lastTable").taiji({
pagerForm:"#lastForm",
pagerUrl:true,
edit:true,
update:true,
view:true
});
1.2.0 2012-06-26
改进
【改进内容】
1.将jQuery.nyroModal.js升级到v2,因为nyroModal的2.0与1.6.2版本不兼容,所以升级之后的目前只支持2.0的版本,
2.支持 javax.validation的验证方式,并且验证出错信息显示在相应字段的后面。
【改进目的】
1.改进之后,弹出第二个层的时候,大小不受第一个层大小的限制了。
2.支持 javax.validation验证方式。
【改进之后使用的注意事项】
1.弹出页面中的关闭调用变化:请使用 parent.$.nmTop().close();取代以前使用的 parent.$.nyroModalRemove();
2.弹出页面不在支持iframe方式,所以弹出页希望使用的脚本,请在主页面加载。
3.默认弹出第二个层的时候,第一个层会被关闭,如果希望保持第一个层,请在调用中增加选项 stack:true,
例如:
$("#queryResult").taiji({
stack:true
});
4.对javax.validation验证方式的使用方式:
在实体类中增加如下注解:
@NotNull
@Size(min=3,max=16)
private String mobile;
在Controller的processAddForm或porcessModForm的方法增加@Valid注解,改为如下形式:
public String processAddForm(@Valid @ModelAttribute("pageModel") User user,
并且在方法体中增加如下代码:
catch(ConstraintViolationException cve){
//验证失败的时候,调用父类的addViolation,将出错信息显示在弹出窗口中的字段后。
super.addViolation(model,cve);
}
【单独使用nyroModal的注意事项】
1.当nyroModal单独使用的时候,也需要注意以上的变化。
2.同时目前对弹出层窗口大小的设定方式也有变化,
请使用 sizes:{minH:xxx,minW:xxx}取代以前使用的:minWidth:xxx,minHeight:xxx
例如:
$('.nyroModal').nyroModal({
stack:true,
sizes:{minH:200,minW:200}
});
1.19 2010-11-25
改进,
A.通过引入 jquery.metadata.js,支持使用元数据方式指定弹出层大小。
add的方式如下描述,
4.如果有多个添加弹出层,并且大小不一样,还可以如下设置:(since 1.19)
将add设置为true,
将add所在的a 标签的class设置为 'taiji_add {boxwidth:xxx,boxheight:yyy}'
其他edit,view,popupRemove同上。
【注意】:推荐使用此模式,不再建议使用1.15版本新增的2,3两种模式。
【注意】:使用此模式的页面,必须要 引入 jquery.metadata.js
B.支持对查询条件进行验证,
默认第一次查询的时候,不进行验证。
设置方式为 validate插件默认的方式,例如:
pagerFormValidateRules:{xxx:{required:true},yyyy:{required:true}},
1.18 2010-11-16
jQuery版本更新到1.4.4,并通过测试
update和operate操作增加了loading
1.17 2010-08-30
代码重构:
QUnit测试完成,所有的函数调用都能单独进行测试了。并且减少了对全局函数及变量的占用。
下一步如果有时间的话,会进行更深入的测试,并且希望能够把代码做进一步的调整,希望可以完全去掉对全局函数及变量的占用。
QUnit的测试参见 war/WEB-INF/jsp/smaples/qunit/qunitTest.jsp
1.16 2010-08-27
代码重构:
主要对代码进行了模块化的改造,便于使用QUnit进行测试,以改变目前需要手工进行页面点击测试,手工测试往往会出现测试不完全的情况,
目前的改造进行了一部分,接下来如果没有什么新的功能添加的话,就会进一步的改造。
代码的功能保持不变。
1.15 2010-08-25
功能增强:
主要针对add,edit,view,popupRemove参数
这4个都是设置是否需要弹出层的,现在主要是应可以单独设置每个弹出层的大小的需求而修改,
这4个的参数配置说明是一致的,主要有3种设置情况,以add为例:
1.如果使用弹出层大小自适应或者与修改、查看一样,请设置此值为true,
2.如果add使用单独的大小,并且所有的add使用一样的,请设置为 {boxwidth:xxx,boxheight:yyy},其中xxx,yyy为要设置的宽和高
3.如果有多个添加弹出层,并且大小不一样,请设置为 '{"taiji_add1":{"boxwidth":"xxx","boxheight":"yyy"},...}',
其中 taiji_add1为相对应的按钮的class,xxx、yyy为要设置的宽和高;多个建议使用 taiji_add1,taiji_add2的方式来区别,
也可以使用 taiji_add_user,taiji_add_role等更具有描述性的词来区分
【注意】:第二种设置与第三种设置的时候,需要严格按照 示例的格式,为的是向下兼容。
1.14 2010-08-18
功能增强:
主要针对pagerUrl参数:
1.默认值为false,不执行查询;
2.设为true,执行查询;
3.设为url,直接设置到form的action上,不建议使用此种方式,留此选择为向下兼容。
1.13 2010-08-03
功能改进:
现在可以针对 add,view,update,popupRemove分别定义弹出层的大小,
方式为: add:{boxwidth:"500",boxheight:"500"}
此次改进为平滑升级,对于不需要分别定义弹出层的大小的情况,
调用方式依然使用以前的方式: add:true
1.12 2010-06-25
功能改进:
1.pagerUrl参数可以不传,直接写在form的action中就可以了。
2.代码重构
1.11 2010-05-27
修正remove,update,operate 的链接由文字变更为图片之后,出现点击没有效果的问题
1.10 2010-05-27
修正查询之后, 录入查询条件,未点击查询,直接点击 下一页的时候,出现的数据不一致情况
更具体的描述参见http://192.168.5.18:8081/browse/COMMPETITOR-137中的图
1.9 2010-05-19
修正BUG,修正remove,operate方法中事件绑定出现的问题
1.8 2010-05-10
添加功能,截获查询条件中的input:text的keydown事件,用于消除只有一个input框的时候,
按回车直接提交而非ajax提交,从而页面不正确的情况
1.7 2010-05-05
修正BUG,update方法中事件绑定出现的问题。
1.6 2010-05-04
增加了如下的可选参数
popupRemove:是否使用弹出层来执行操作并在操作成功的情况下删除当前行,默认值:false
popupRemoveCallback:popupRemove完成之后,页面进行特殊处理(将服务器返回的数据作为参数调用)
1.5 2010-04-19
增加了如下的可选参数:
addCallback: add完成之后,页面进行特殊处理(将服务器返回的数据作为参数调用)
editCallback: edit完成之后,页面进行特殊处理(将服务器返回的数据作为参数调用)
delCallback: del完成之后,页面进行特殊处理(将服务器返回的数据作为参数调用)
removeCallback: remove完成之后,页面进行特殊处理(将服务器返回的数据作为参数调用)
operateCallback:operate完成之后,页面进行特殊处理(将服务器返回的数据作为参数调用)
值得注意的问题是: