日期:2014-05-16 浏览次数:20393 次
js合成url时,如果参数是中文,传到struts2中会乱码,解决办法如下:
1.js文件中使用encodeURI()方法(必须套两层)。
login_name = encodeURI(encodeURI(login_name));??
2.action中URLDecoder解码
loginName = java.net.URLDecoder.decode(loginName,"UTF-8");
-------------------------------------------------
实际应用如下queryPrice()方法:
1)js代码: /*模糊查询价格策略*/ function queryPrice() { var checkMoney = true; var textMoney = $("#textMoney"); var textArea = $("#textArea");//地区错误提示位置 /** * 点击查询,判断至少选择了一个面值,否则不能查询 */ var obj = document.getElementsByName("money"); for( var i=0; i<obj.length; i++) { if(obj[i].checked) { checkMoney = true; break; } else { checkMoney = false; } } if( ($("#Area_a").val() != 'no') && ($("#Area_b").val() != 'no') && checkMoney == true ) { var checkText=$("#Area_b").find("option:selected").text();//###这里得到select被选中option的text var Area_b_text = encodeURI(encodeURI(checkText)); $("#form1").attr("action","priceStrategy_querAllPriceStrategy2?Area_b_text="+Area_b_text); $("#form1").submit(); } else { textArea.html("<font color='red'>选择地区!</font>"); textMoney.html("<br><font color='red'>至少选择一种面值!</font>"); } }
?
?
2)jsp页面 <table border=1 width="100%"> <tr> <td colspan="3">查询操作</td> </tr> <tr> <td> 地区: </td> <td> <select id="Area_a" name="Area_a" size="1" onchange="getAllCityOrProvince()"> <c:choose> <c:when test="${ Area_a == 'nei' }"> <option value="no">==请选择==</option> <option value="nei" selected="selected">省内</option> <option value="wai">省外</option> </c:when> <c:when test="${ Area_a == 'wai' }"> <option value="no">==请选择==</option> <option value="nei">省内</option> <option value="wai" selected="selected">省外</option> </c:when> <c:otherwise> <option value="no" selected="selected">==请选择==</option> <option value="nei">省内</option> <option value="wai">省外</option> </c:otherwise> </c:choose> </select> <select id="Area_b" name="Area_b" size="1"> <c:choose> <c:when test="${ Area_b_text != null }"> <option value="${ Area_b }">${ Area_b_text }</option> </c:when> <c:otherwise> <option value="no"> </option> </c:otherwise> </c:choose> </select> </td> <td><span id="textArea"></span></td> </tr> <tr> <td> </td> <td> <input type="button" value=" 查询 " onclick="queryPrice()"/> <input type="button" value=" 重置 " onclick="resetQueryPrice()"/> </td> <td> </td> </tr> </table>
?
?
3)struts2的Action中getter方法这样设置: private String Area_b_text;//第二个select中的text public void setArea_b(String areaB) { Area_b = areaB; } public String getArea_b_text() throws UnsupportedEncodingException { return java.net.URLDecoder.decode(Area_b_text,"UTF-8");//前台获得时自动转为UTF-8编码格式 }
?
=====================================================================================
###其他资料
url传递中文
如果jsp页面,myeclipse、web.xml中org.springframework.web.filter.CharacterEncodingFilter,都是UTF-8编码,
直接传中文一般是不会乱码的,如果再有乱码,