zoukankan      html  css  js  c++  java
  • URLDecoder: Incomplete trailing escape (%) pattern问题处理

    http://blog.csdn.net/yangbobo1992/article/details/10076335

    ________________________________________________________

    最近在用的项目中,分页页面在导出excel抛出

    java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern

    该页面采用的是DWR分页,经过一番搜罗,终于修成正果.解决办法

     大致意思都懂了,我们只需要将传入后台的参数字符在decode之前使用replaceAll('%','%25')一下即可

    Java代码  收藏代码
    1. try {  
    2.      pageTitle = java.net.URLDecoder.decode(pageTitle,"UTF-8");  
    3.      sc = java.net.URLDecoder.decode(sc ,"UTF-8");   
    4. catch (UnsupportedEncodingException e) {    
    5.      e.printStackTrace();  
    6. }    

     修正后代码如下:

    Java代码  收藏代码
    1. try {  
    2.      pageTitle = java.net.URLDecoder.decode(pageTitle.replaceAll("%", "%25"),"UTF-8");  
    3.      sc = java.net.URLDecoder.decode(sc.replaceAll("%", "%25") ,"UTF-8");   
    4. catch (UnsupportedEncodingException e) {    
    5.      e.printStackTrace();  
    6. }    

    部分引用来自: http://dwr.2114559.n2.nabble.com/Exception-URLDecoder-Incomplete-trailing-escape-pattern-td5396332.html

    特别注意:

    有些时候导出excel时采用的是get方式导致URL字符串长度过长,改用POST方式可以解决以上问题。

    使用js实现POST表单提交代码片段:

    Js代码  收藏代码
    1. function post(URL, PARAMS)  
    2. {          
    3.     //创建一个临时表单  
    4.     var tempForm = document.createElement("form");       
    5.       
    6.     tempForm.action = URL;          
    7.     tempForm.method = "post";          
    8.     tempForm.style.display = "none";   
    9.       
    10.     //遍历各个参数,将文本域添加至表单中  
    11.     for (var x in PARAMS)   
    12.     {          
    13.         var opt = document.createElement("textarea");          
    14.         opt.name = x;          
    15.         opt.value = PARAMS[x];          
    16.         tempForm.appendChild(opt);          
    17.     }    
    18.       
    19.     //将表单添加至当前页面中.  
    20.     document.body.appendChild(tempForm);      
    21.       
    22.     //提交表单.  
    23.     tempForm.submit();    
    24. }  

     

    也可参照此方法解决:http://blog.csdn.net/zhensoft163/article/details/7298161

  • 相关阅读:
    LINQ篇:ASP.NET using LINQ(Part One) Scott大师的产物
    运算符重载 operator+[纯属温习啊][附加了一些内容 如:同名属性,复制构造函数]
    Vista中低端电脑如何打开Aero效果或者就是3D效果
    基于可配置化的设计[原创][4.20更新]
    Treeview控件如何在asp.net ajax中使用小技巧
    PetShop 4.0 系列之四 [转]
    XML篇查询语言XPath
    抽象工厂模式[转]
    何时使用委托而不使用接口
    DNN开篇第一话
  • 原文地址:https://www.cnblogs.com/cuizhf/p/4212461.html
Copyright © 2011-2022 走看看