displayTag对中文的支持不好,比如如果查询条件中有中文,就无法翻页,无法对中文排序,将中文导出为指定文件时出现乱码等。这些问题有时候会让人很郁闷,有时候逼得你要去修改它的源代码。
对于中文无法翻页、排序。
网上的方法:
是修改Tomcat下的server.xml文件。找到HTTP的Connector标签,在里面添加一项URIEncoding="..",引号里面的内容取决于你的页面编码,比如可以是GBK,UTF8等。
按网上方法 本地修改tomcat配置文件测试没效果,而且这个只是针对tomcat,其他容器比如weblogic就不适用了
本人方法:
修改displaytag.js实际上就是对url中的参数添加加密, value = encodeURI(encodeURI(value)); 对参数进行二重编码,然后后台解密val = URLDecoder.decode(val, "UTF-8");
样例:
//displaytag.js中添加新方法,用来对超链接中的参数进行编码
function handleParams(myUrl){
//中文翻页问题
if(myUrl.indexOf("ytdyjykdbjgb")){
if(myUrl.indexOf('?')!=-1&&myUrl.indexOf('&')!=-1){
var strsWh = myUrl.split("?");
//取得问号前完整连接
var url1=strsWh[0];
var url2=strsWh[1];
// alert(strsWh[0]);
var args={};
var url3 = url2.split("&");
// console.log("url3="+url3);
for (var i = 0; i < url3.length; i++) {
var eq = url3[i].indexOf('=');
if(eq == -1) continue;
var name = url3[i].substring(0,eq); //提取name
var value = url3[i].substring(eq+1); //提取value
// console.log("name="+name);
//console.log("val="+value);
var patt=/Q_.*_S/g;
if(name.indexOf("Q_")!=-1&&name.indexOf("_S")!=-1){
if(value!=""&&value!=undefined){
// alert(name);
// alert(value);
value = encodeURI(encodeURI(value)); //对value进行解码
// console.log("name="+name+",val="+value);
}
}
args[name] = value; //存储为属性
}
myUrl=url1+"?";
for (let key in args) {
if (args.hasOwnProperty(key)) {
// console.log(args[key]) //
//alert("key="+key+",val="+args[key]);
myUrl+=(key+"="+args[key]+"&");
}
}
myUrl=myUrl.substring(0,myUrl.length-1); //去掉最后一个多余的&
// alert(myUrl);
}
return myUrl;
}
function goPage(n,tableIdCode){
var url = replacecurrentPage($("#_nav"+tableIdCode).attr('href'),n,tableIdCode);
url = replagePageSize(url,$("#oldPageSize"+tableIdCode).val(),tableIdCode);
var myUrl =replageOldPageSize(url,$("#oldPageSize"+tableIdCode).val(),tableIdCode);
//alert(myUrl);
location.href= handleParams(myUrl);
}
function changePageSize(sel,tableIdCode){
var url = replagePageSize($("#_nav"+tableIdCode).attr('href'),sel.value,tableIdCode);
url = replacecurrentPage(url,$("#currentPage"+tableIdCode).val(),tableIdCode);
//location.href=replageOldPageSize(url,$("#oldPageSize"+tableIdCode).val(),tableIdCode);
var myUrl=replageOldPageSize(url,$("#oldPageSize"+tableIdCode).val(),tableIdCode);
location.href= handleParams(myUrl);
}
//调用
String Q_bdzmc_S = handleUrlParamsTwo(request,"bdzmc", queryFilter);
/**
* @param param
* @param queryFilter
* @return 对包含Q_和_S 的查询条件,进行解码
* @throws UnsupportedEncodingException
* String
*
*/
public String handleUrlParamsTwo(HttpServletRequest request, String key, QueryFilter queryFilter) throws Exception {
Map<String, Object> filters = queryFilter.getFilters();
String val = request.getParameter("Q_" + key + "_S");
System.out.println("val=" + val);
if (val != null && val != "") {
int i = 0;
while (val.indexOf("%") != -1) {
i++;
val = URLDecoder.decode(val, "UTF-8");
if (i == 300) {
break;
}
}
System.out.println("val=" + val);
// Map<String, Object> filters = queryFilter.getFilters();
// filters.put("Q_" + key + "_S", val);
filters.put(key, val);
queryFilter.setFilters(filters);
} else {
}
System.out.println(filters.toString());
return val;
}