struts2对于表单提交进行了拦截和编码,而且也可以通过filter来统一进行表单编码转换
但是对于get请求所带的参数为中文,struts2就无能为力了
在网上查找了一些方法,但都不行
这就需要我们自己来处理
首先把原来的链接:
<a href="${pageContext.request.contextPath }/manage/reportManage_reportProfit.action?page=${request.profit.totalPage}&searchType=${searchType}&searchContent=${searchContent">下一页</a>
修改成js触发形式:
<a href="javascript:next('${request.profit.totalPage}&','${searchType}','${searchContent}');">下一页</a>
js:
function next(page,searchType,searchContent){
window.location.href="${pageContext.request.contextPath }/manage/reportManage_reportDaily.action?page="+page+"&searchType="+searchType+"&method=get&searchContent="+encodeURI(searchContent);
}
通过js来把searchContent编码,这样在Action中接受到的编码是iso-8859-1的形式
在Action中把字符串的编码格式转换为utf-8;
if(method!=null&&method.equals("get")){
searchContent= new String(searchContent.getBytes("iso-8859-1"),"utf-8");
}
重新编码后就不会出现乱码了