jsp页面url编码_springmvc_controller解码
程序员文章站
2022-07-15 16:11:41
...
项目框架: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[i]).value; if(tempdata != undefined){ if(i == 0){ retStr = docArr[i] + "=" + tempdata; }else{ retStr = retStr + "&" + docArr[i] + "=" + 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[i]; 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)。
上一篇: Mybatis使用总结
下一篇: TNS-03505问题解决总结