当前位置: 代码迷 >> Java Web开发 >> Spring MVC + easyui 的有关问题急
  详细解决方案

Spring MVC + easyui 的有关问题急

热度:817   发布时间:2016-04-13 22:15:25.0
Spring MVC + easyui 的问题急急...
Spring MVC  + easyui 在的项目,程序在IE浏览器下,程序通过ajaxsubmit提交上传文件,控制器处理服务器端文件保存并返回文件名的JSON数据。但客户端一接收这个JSON就跳“下载保存文件”的对话框。
但在Firefox下对是正常的,

Srping-servlet.xml 里的配置



<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>

<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>



Controller层里的写法:



@RequestMapping(value = "/add", method = RequestMethod.POST)
public @ResponseBody
Json add(EnterpriseModel model) {
Enterprise bean = new Enterprise();
BeanUtils.copyProperties(model, bean);
// bean.setCreatedate(new Date());
Json jn = new Json();
try {
Enterprise e = enterpriseService.save(bean);
logger.info(e.getId());
jn.setSuccess(true);
jn.setMsg("保存成功!");
BeanUtils.copyProperties(e, model);
jn.setObj(model);
} catch (Exception e) {
jn.setMsg(e.getMessage());
}
return jn;
}





页面层调用: 


handler : function() {
$('#pages_sys_enterprise_addForm').form('submit',{   
    url:'${pageContext.request.contextPath}/enterprise/add',
    success:function(data){
       var obj = jQuery.parseJSON(data);
       if(obj.success){
        $('#pages_console_sys_enterprise').datagrid('insertRow',{
        index:0,
        row:obj.obj
        }); 
        $('#pages_sys_enterprise_addDialog').dialog('close');
       }
       $.messager.show({
title : '提示',
msg : obj.msg
   });
    }   
});
}



------解决思路----------------------
对ie而言application/json是识别不了的MIME类型,所以就当成文件下载下了,可以尝试在ie下改为text/html。
------解决思路----------------------
我也遇到了这个问题,springmvc中加入<mvc:annotation-driven />后,IE就提示下载。
去掉后就没有此问题。
但我使用了JSR303 annotation ,还必须得加上这个<mvc:annotation-driven />
同求 该怎么解决啊..
------解决思路----------------------
spring MVC 会优先通过http请求header的Accept标记来决定是什么转换类来处理@responsebody注解,找不到才会走默认。

用IE查看下你的的AJAX请求,header的Accept值是对的么?
  相关解决方案