当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

spring mvc开发中浏览器兼容的奇怪问题

发表于: 2013-08-26   作者:bitray   来源:转载   浏览:
摘要:     最近个人开发一个小的OA项目,属于复习阶段.使用的技术主要是spring mvc作为前端框架,mybatis作为数据库持久化技术.前台使用jquery和一些jquery的插件.     在开发到中间阶段时候发现自己好像忽略了一个小问题,整个项目一直在firefox下测试,没有在IE下测试,不确定是否会出现兼容问题.由于jquer
    最近个人开发一个小的OA项目,属于复习阶段.使用的技术主要是spring mvc作为前端框架,mybatis作为数据库持久化技术.前台使用jquery和一些jquery的插件.
    在开发到中间阶段时候发现自己好像忽略了一个小问题,整个项目一直在firefox下测试,没有在IE下测试,不确定是否会出现兼容问题.由于jquery的天生兼容性良好,我就没有过多的关注.在项目接近收尾阶段,我开启了IE测试,不过这次发现确实存在了兼容性问题,而且问题非常严重.
    由于为了简便,我在提交表单的操作上采用jquery.form.js,这个组件.它提供了ajaxSubmit这个方法,能够进行异步表单提交,并在提交成功后,执行success函数.我的系统在一个表单页面既有普通的内容,也有file标签,进行文件上传的控制.springmvc的controller中需要写一段这样的代码:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
这是为了将普通的httprequest转换为spring的request,进而获取文件流等信息.在ajaxSubmit这种提交请求下,firefox下面测试完全正常,能够顺利上传,执行回调函数;但是如果在IE浏览器下面操作,这个位置会进行ClassCast类转换异常,同样也不会执行回调函数.而且,一些表单如果设置为
enctype="multipart/form-data"
这个属性,success回调函数也同样不能执行,而且在spring mvc的controller中,会将会穿页面的json字符串解析为要跳转的页面,不回传给ajax请求.也就说明ajax请求,在IE浏览器下,是不能进行文件上传操作的.
    参数传递过程中,在IE浏览器下也会发生乱码,而且火狐下还是正常.根据debug日志分析,是IE下的请求头和firefox下的请求头发生了重大的区别.firefox是application/json,IE的比较长,application/x-Microsoft-....这就导致了,一系列的问题发生.
    看来还是浏览器的不兼容导致,而且短时间内也没什么好办法去重构这个问题,只能采用分而治之的情况了,如果不需要上传的页面,还可以继续使用,但是enctype="multipart/form-data"这个属性必须去掉,不然会出现乱码和ajax回调函数不执行的情况.如果确定需要上传的页面,最好还是普通的表单提交,否则不兼容的话,实在没办法.
    除了要喷微软对于浏览器的兼容性没有计划之外,这个问题也给我们敲响了一个警钟,测试要尽早做,不要最后做,否则风险很大,而且出现问题无法规避.

spring mvc开发中浏览器兼容的奇怪问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
最近在使用TabHost的时候遇到了一些奇怪的问题,在这里总结分享备忘一下。 首先说一点TabActivity将
最近在使用TabHost的时候遇到了一些奇怪的问题,在这里总结分享备忘一下。 首先说一点TabActivity将
转载 http://www.cnblogs.com/janken/archive/2012/07/19/2598710.html 最近在使用TabHost的时候遇
spring框架 Spring MVC 框架:MVC框架是一个全功能的构建 Web应用程序的 MVC 实现。通过策略接口,M
在Spring MVC中,首先进行的是IoC容器的初始化,包括Root和DispatchServlet对应的content。在IoC容
首先,仅仅IE支持的条件注释语句 <!--[if !IE]><!--> 除IE外都可识别 <!--<![end
如何根据http请求选择合适的controller是MVC中一项十分关键的功能,在Spring MVC中,HandlerMapping
我们知道select标签在各个浏览器中的属性和各浏览器的支持各有些不同,从而造成select选择框在各浏
引言: 同一种语言javascript,在不同的浏览器中,存在语言兼容性问题,本质上是由于不同的浏览器是
最近在用QT Creator时候遇上一个很奇怪的问题,以往添加头文件使用#include<QStringListModel>
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号