解决:displaytag分页get提交出现中文乱码

针对displaytag插件出现了分页带中文参数值的时候乱码,下载displaytag源码包,找到该类修改代码
DefaultRequestHelper.java

    /**
     * @see org.displaytag.util.RequestHelper#getParameterMap()
     */
    public Map getParameterMap()
    {

        Map map = new HashMap();

        // get the parameters names
        Enumeration parametersName = this.request.getParameterNames();

        while (parametersName.hasMoreElements())
        {
            // ... get the value
            String paramName = (String) parametersName.nextElement();

            request.getParameter(paramName);
            // put key/value in the map
            String pName="";


            String[] originalValues = (String[]) ObjectUtils.defaultIfNull(
                this.request.getParameterValues(paramName),
                new String[0]);
            try {
                if(originalValues[0]!=null){

                    if(isContainChinese(originalValues[0])){
                        pName=originalValues[0];
                    }else{
                        pName=new String(originalValues[0].getBytes("ISO-8859-1"),"UTF-8");
                    }
                }
            } catch (UnsupportedEncodingException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
//          String[] values = new String[originalValues.length];
//
//            for (int i = 0; i < values.length; i++)
//            {
                try
                {
                    pName = URLEncoder.encode(StringUtils.defaultString(pName), StringUtils
                        .defaultString(response.getCharacterEncoding(), "UTF8")); //$NON-NLS-1$
                }
                catch (UnsupportedEncodingException e)
                {
                    throw new UnhandledException(e);
                }
//            }
            map.put(paramName, pName);

        }

        // return the Map
        return map;
    }

    public  boolean isContainChinese(String str) {

        Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
        Matcher m = p.matcher(str);
        if (m.find()) {
            return true;
        }
        return false;
    }

资源下载:http://download.csdn.net/detail/u010503822/9760850

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值