过客 发表于 2016-11-16 11:03:29

excel导出功能汉字查询条件乱码

文件路径:src\main\webapp\plug-in\tools\curdtools_zh-cn.js
原代码为
/**
* Jeecg Excel 导出
* 代入查询条件
*/
function JeecgExcelExport(url,datagridId){
        var queryParams = $('#'+datagridId).datagrid('options').queryParams;
        $('#'+datagridId+'tb').find('*').each(function() {
          queryParams[$(this).attr('name')] = $(this).val();
        });
        var params = '&';
        $.each(queryParams, function(key, val){
                params+='&'+key+'='+val;
        });
        var fields = '&field=';
        $.each($('#'+ datagridId).datagrid('options').columns, function(i, val){
                if(val.field != 'opt'){
                        fields+=val.field+',';
                }
        });
        window.location.href = url+ encodeURI(fields+params);
}
前端将汉字查询条件通过encodeURI转码为UTF-8,后台通过过滤器设置request对象编码方式为UTF-8,可是最终Controller接到的参数是用ISO8859-1编码的,会出现乱码问题,弄了很久也找不到原因,干脆改一下前端提交的方式,改为手动拼form表单,post提交,这是最保险的方式,代码如下:
function JeecgExcelExport(url,datagridId){
        var queryParams = $('#'+datagridId).datagrid('options').queryParams;
        var formStr = '<form action="'+url+'" method="post">';
        $('#'+datagridId+'tb').find('*').each(function() {
          queryParams[$(this).attr('name')] = $(this).val();
        });
        $.each(queryParams, function(key, val){
                formStr += '<input name="'+key+'" type="hidden" value="'+val+'">';
        });
        var fields = '';
        $.each($('#'+ datagridId).datagrid('options').columns, function(i, val){
                if(val.field != 'opt'){
                        fields+=val.field+',';
                }
        });
        formStr += '<input name="field" type="hidden" value="'+fields+'">';
        formStr += '</form>';
        $(formStr).appendTo('body').submit().remove();
}
页: [1]
查看完整版本: excel导出功能汉字查询条件乱码