六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 26|回复: 0

jsp页面url编码_springmvc_controller解码

[复制链接]

升级  15.33%

17

主题

17

主题

17

主题

秀才

Rank: 2

积分
73
 楼主| 发表于 2013-1-29 08:38:38 | 显示全部楼层 |阅读模式
项目框架:springmvc+mybatis+oracle
最近项目使用弹出框,弹出框业务操作完成时列表刷新总是提示是否需要重新重新提交。试了很多方法,最后将列表页面的刷新方式改为get,然后使用url传参时需要编码,在controller里面还得需要解码。
页面编码使用下面的js方法:
/*************************************************************拼接字符串*@Author *@version 2012-08-14************************************************************/function linkUrl(){var args = linkUrl.arguments;var doc = args[0];var retStr = "";if(doc != undefined){var docArr = doc.split("~");if(docArr != undefined){for(i=0;i<docArr.length;i++){var tempdata = document.getElementById(docArr).value;if(tempdata != undefined){if(i == 0){retStr = docArr + "=" + tempdata;}else{retStr = retStr + "&" + docArr + "=" + tempdata;}}}}}if(retStr != ""){retStr = encodeURI(encodeURI(retStr));};return retStr;} 
Jsp页面为:

//快速查询$("span:contains(查 询)").click(function() {var  reStr="fepname~name~idcard";var result=linkUrl(reStr);window.location.href = "${ctx}/housesale/housesaleperson/bcosalerinfolist?"+result;}); 
后台解码方法:(java代码)

Controller调用:entity = (BcoSalerinfo)ParamUtils.parseObject("fepname,0~name,0~idcard,1", entity);(BcoSalerinfo类里面必须有相应属性)

/****     * function: process parameter decode     *      * @version: 2012-08-16     * ****/    public static Object parseObject(String paramName, Object entity){    if(paramName != null && !"".equals(paramName) && !"null".equals(paramName)){    String[] paraArr = paramName.split("~");//name,flag~name,flag……    if(paraArr != null && paraArr.length > 0){    for(int i=0; i<paraArr.length; i++){    String paraStr = paraArr;    if(paraStr != null && !"".equals(paraStr) && !"null".equals(paraStr)){    String[] filedArr = paraStr.split(",");    if(filedArr != null && filedArr.length == 2){    if(filedArr[1] != null && "0".equals(filedArr[1])){//need decode    String str = (String)Reflections.invokeGetter(entity, filedArr[0]);    if(str != null && !"".equals(str) && !"null".equals(str)){    Reflections.invokeSetter(entity, filedArr[0], EncodesUtils.urlDecode(str));    }    }else{    continue;    }    }//    }    }    }    }    return entity;} 
注:该方法依赖于反射的一个类文件,参考附件(Reflections.java)。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表