jmesa查询条件中文的编码转换问题

环境说明:
1.页面编码配置:
<%@ page language="java" contentType="text/html;charset=GBK"  pageEncoding="GBK"%>

2.tomcat 的conf/server.xml中加了
 <Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" />

3.工程添加了Filter ,doFilter 其中encoding=“GBK”
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
if(ignore || request.getCharacterEncoding() == null)
{
String encoding = selectEncoding(request);
if(encoding != null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}

用jmesa的查询方法并不支持中文查询,发现limit.getFilterSet()中value是乱码,修改提交方式(post/get)没有效果,以下是解决方法,修改后工程其他部分功能暂没有发现受到影响:

1.jmesa.js文件的160行修改为
  url += '&' + limit.id + '_f_' + filter.property + '=' + encodeURIComponent(encodeURIComponent(filter.value));


2.添加

Limit limit = tableFacade.getLimit();
List<Filter> li=new ArrayList(limit.getFilterSet().getFilters());
limit.getFilterSet().getFilters().clear();
for(int k=0;k<li.size();k++){
limit.getFilterSet().addFilter(li.get(k).getProperty(), URLDecoder.decode(li.get(k).getValue(),"utf-8"));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值