基于SpringMVC+Jquery+html5的开发中解决多选控件操作的浏览区兼容实践

       我们的任务管理系统是基于SpringMVC+Jquery+html5的开发的。建议在chrome上运行最完美。IE9及以下,显示都有问题。IE升级到11,可以有效兼容HTML5,可以正常显示了。因此领导希望,对于IE至少要支持到IE11.

       具体实践中,发现IE11和chrome在对于控件的数据传参上是有区别的,这就要求我们在代码处理时候要区别对待。

      在一个给用户分配权限的界面,发现chrome可以支持,但是IE11就无法保存数据。经过代码比较,发现IE11的传参支持字符串,但是不支持数据对象。但是chrome可以直接支持数据对象。因此取值方法就完全不同。

      原来的前端代码如下:

<select id="roleId" name="roleId" multiple="multiple" style="width: 100%">
                <c:forEach var="upmsRole" items="${upmsRoles}">
                    <option value="${upmsRole.roleId}">${upmsRole.title}</option>
                </c:forEach>
            </select>

原来后端取值代码如下:

 String[] roleIds = request.getParameterValues("roleId");
                upmsUserRoleService.role(roleIds, id);

这在基于webkit引擎的chrome浏览器上没有问题,因为其支持数据对象传参。前端多选下拉框选择的数据,在后端可以直接以数组对象返回。可是在IE11,这样写法就不支持了。经过测试,前后端应该如下修改。

修改后的前端如下:

<select id="roleId" name="roleId" multiple="multiple" style="width: 100%" onchange="javascript:roleChange();">
                <c:forEach var="upmsRole" items="${upmsRoles}">
                    <option value="${upmsRole.roleId}">${upmsRole.title}</option>
                </c:forEach>
            </select>

 <input type="hidden" id="roleId_str" value="${roleId_str}" class="form-control" name="roleId_str"/>


.....

....
  function roleChange() {



        var select = document.getElementById("roleId");

        var selStr = "";

        for (i = 0; i < select.length; i++) {
            if (select.options[i].selected) {

                selStr = selStr + "," + select[i].value;

            }
        }

        $("#roleId_str").val(selStr);

    }

修改后的后端如下:

 String[] roleIds = StringUtils.split(roleId_str, ",");
                upmsUserRoleService.role(roleIds, id);

可以看到,IE11只支持字符串传参,所以要前端利用JS代码,把多选的操作,赋值到隐藏域控件中。后端从该控件取值是一个逗号分隔的字符串。在后端,依据分隔符号,可以很容易转换为数字对象,后续就可以正常操作了。数据的修改保存就实现了。

 

当然IE11和chrome在兼容操作上还有问题需要注意。1)IE11的GET传参不支持中文,Chrome没有问题。我的解决方法是用英文代替,显示时候,在后端替换为中文;2)IE11中的对话框调用的页面,数据更新后一直显示之前缓存数据,会让用户误以为操作失败,而chrome没有此问题。我经过研究发现,人为刷新下该页面,就可以正常显示了。我对于IE11特点采用了讨巧的办法。数据更新后,在前端页面自动打开小窗口刷新该URL,然后在1秒后,自动关闭。前端操作,会有一闪感觉,但是基本不影响操作体验和流畅性。作为暂时方案就这样处理了。希望读者有更好方法,发现后,可以分享我。

具体前端代码如下:

function closeMyWin(mywin) {
        mywin.close();

    }


...
...
...
roleDialog.close();
                    $table.bootstrapTable('refresh');
                    // var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
                    // var isOpera = userAgent.indexOf("Opera") > -1;
                    // if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
                    //"IE";
                    var mywin = window.open('${basePath}/manage/user/role/' + roleUserId, "", "height=5, width=5,top=5,left=5, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no");
                    setTimeout(closeMyWin, 1000, mywin);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JEECMS内容管理系统是国内java开源CMS行业知名度最高、用户量最大的站群管理系统。 功能: 信息管理 ├ 文章 ├ 相册 ├ 多媒体 ├ 视频 ├ 下载 ├ 作品 ├ 产品 ├ 文库 ├ 招聘 互动信息 ├ 留言与反馈 ├ 评论 ├ 投票调查 ├ 在线调查问卷/答卷 ├ 通知公告 ├ 领导信箱 ├ 站内信 ├ 广告管理 用户与权限 ├ 用户管理 ├ 会员组管理 ├ 会员组权限管理 ├ 信息发布审批 ├ 会员浏览权限 ├ 部门管理 ├ 工作流 日志管理 ├ 操作日志 ├ 稿件操作日志 ├ 登录日志 ├ 工作量统计 统计功能 ├ 会员注册统计 ├ 内容统计 ├ 评论统计 ├ 留言统计 ├ PV统计 ├ 独立IP统计 ├ 独立访客统计 ├ 人均浏览次数统计 ├ 来访网站统计 ├ 来访页面统计 ├ 搜索关键字统计 ├ 受访页面统计 ├ 地分布统计 ├ 统计初始化 发布与部署 ├ 文章静态化 ├ 全站静态化 ├ FTP同步 ├ 服务器分布部署 ├ 批处理 (批量移动文章/栏目、批量删除、批量上传图片/附件等) ├ 一键排版 ├ 定时任务 ├ tag自动提取 站点配置 ├ 网站参数配置 ├ 用户注册配置 ├ RSS配置 ├ RSS订阅 ├ TAG管理 ├ 文件上传配置 ├ 模板管理 ├ 自定义模板 ├ 可视化模板编辑 ├ 全文检索 ├ 友情链接管理 系统管理 ├ 内容关键字管理 ├ 自定义模型管理(自定义栏目/内容模型,一个栏目支持多种内容模型) ├ 网页信息采集 ├ 模块管理 ├ 数据备份与恢复 ├ 网站防火墙 ├ 附件管理 ├ 字典管理 ├ 国际化(前后台可以设置成多语言,目前系统自带后台英文操作菜单) ├ 系统支持PC端、移动端访问 网站群 ├ 节点维护 ├ 节点独立管理 ├ 站点信息共享管理 ├ 站点信息推送 ├ 全站搜索
好的,我可以为您提供一些关于开发基于SpringMVC+Spring+MyBatis框架的订餐管理系统的指导。 1. 系统分析与设计 在开发订餐管理系统之前,您需要进行系统分析和设计。这包括确定系统的功能需求、数据结构、数据库设计等。您可以使用UML图来表示系统的结构和功能。 2. 环境配置 在进行开发之前,您需要配置开发环境。您需要安装Java开发工具、Tomcat服务器、MySQL数据库等。您还需要配置Maven来管理项目依赖。 3. 开发技术选择 在进行订餐管理系统的开发时,您需要选择使用SpringMVC、Spring和MyBatis框架来实现系统的功能。SpringMVC用于处理HTTP请求和响应,Spring用于管理应用程序的组件,MyBatis用于访问数据库。 4. 数据库设计 在进行数据库设计时,您需要确定数据库表的结构和关系。您可以使用MySQL数据库来存储数据。您需要创建菜品表、订单表、用户表等,并设置相应的表关系。 5. 功能实现 在进行订餐管理系统的功能实现时,您需要使用SpringMVC、Spring和MyBatis框架来实现相应的功能。例如,您需要实现用户注册、登录、用户管理、菜品管理、订单管理等功能。 6. 系统测试与部署 在完成订餐管理系统的开发后,您需要进行系统测试和部署。您需要对系统进行全面的测试,包括功能测试、性能测试、安全测试等。如果测试通过,您可以将系统部署到服务器上,供用户使用。 总之,开发基于SpringMVC+Spring+MyBatis框架的订餐管理系统需要您具备一定的Java编程经验和相关技术知识。但是,只要您认真学习和实践,相信您一定可以完成这个任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值