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]