关于页面get传递参数,struts2 action接受乱码问题
我在javascript中需要用varURL="<%=path%>/dishNumChart?date="+date+escape("&")+"kname="+kname...
我在javascript中需要用
var URL = "<%=path%>/dishNumChart?date="+date+escape("&")+"kname="+kname; fusionChart.setDataURL(URL);来绘制统计图。所以貌似只能用get方法传输。
从网上找了,servlet.xml中加上URIEncoding="UTF-8或GBK"不行,页面用new String(value.getBytes("ISO-8859-1"),"UTF-8")这个也不行, 用encodeURI进行编码然后解码 也不成功。(注:我的页面编码是UTF-8的,后台编码页面时GBK 的,由于本人粗心,所以整个项目采用的是GBK的格式除了页面,现在寻求大神能够帮忙解决后台接受参数乱码问题) 展开
var URL = "<%=path%>/dishNumChart?date="+date+escape("&")+"kname="+kname; fusionChart.setDataURL(URL);来绘制统计图。所以貌似只能用get方法传输。
从网上找了,servlet.xml中加上URIEncoding="UTF-8或GBK"不行,页面用new String(value.getBytes("ISO-8859-1"),"UTF-8")这个也不行, 用encodeURI进行编码然后解码 也不成功。(注:我的页面编码是UTF-8的,后台编码页面时GBK 的,由于本人粗心,所以整个项目采用的是GBK的格式除了页面,现在寻求大神能够帮忙解决后台接受参数乱码问题) 展开
6个回答
展开全部
我也 遇到这个问题 你可以试试
一直以为是在这里用ognl表达式取出来的时候就乱码了,后来调了一天,想了想,才发现,这里执行完saveDir的action以后,
转发方式是redirect,那么就相当于是在地址栏重新输入,下面这个action的地址了,然后加上后面的参数。
那么就相当于你自己在地址栏输入listDirByParent.action?child.name=中文。。。,那么这样的请求属于get方式请求,
不会通过过滤器进行过滤,而是通过tomcat进行地址的编码,而tomcat的编码,我记得是iso-8809-1,
那么在action端Struts2默认是utf-8的编码方式,所以编码跟解码的方式出现了不符,就会出现乱码了。
那么解决办法就是,直接在tomcat的server.xml中修改下面这段
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />。
修改完以后,ok了。
一直以为是在这里用ognl表达式取出来的时候就乱码了,后来调了一天,想了想,才发现,这里执行完saveDir的action以后,
转发方式是redirect,那么就相当于是在地址栏重新输入,下面这个action的地址了,然后加上后面的参数。
那么就相当于你自己在地址栏输入listDirByParent.action?child.name=中文。。。,那么这样的请求属于get方式请求,
不会通过过滤器进行过滤,而是通过tomcat进行地址的编码,而tomcat的编码,我记得是iso-8809-1,
那么在action端Struts2默认是utf-8的编码方式,所以编码跟解码的方式出现了不符,就会出现乱码了。
那么解决办法就是,直接在tomcat的server.xml中修改下面这段
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />。
修改完以后,ok了。
展开全部
你用下面方法试一试
把页面中的内容用post提交给action,在action中生成xml格式的数据,然后放到request 中,返回到jsp页面后,显示统计图
<%
String strXML = (String)request.getAttribute("strXML");
%>
<script type="text/javascript">
var xml = "<%=strXML%>";
var myChart = new FusionCharts("fusioncharts/Charts/Column3D.swf", "mychart", "550","300" );
myChart.setDataXML(xml);
myChart.render("piechart");
</script>
把页面中的内容用post提交给action,在action中生成xml格式的数据,然后放到request 中,返回到jsp页面后,显示统计图
<%
String strXML = (String)request.getAttribute("strXML");
%>
<script type="text/javascript">
var xml = "<%=strXML%>";
var myChart = new FusionCharts("fusioncharts/Charts/Column3D.swf", "mychart", "550","300" );
myChart.setDataXML(xml);
myChart.render("piechart");
</script>
更多追问追答
追问
请问setDataXML() 这个()中传的xml是什么样子的,我在用的ajax回调函数得到了返回的xml是个String类型的 dataType : "json",uccess : function(data) { c=data.xmlStr; } var fusionChart = newFusionCharts(“/page/fusionChart/charts/"+e.target.id+".swf","chartId","600","500"); fusionChart.setDataXML(c); fusionChart.render("middle");
为什么不好用呢
追答
就是把xml文件中的内容做为字符串传到setDataXML()中,
就是你在服务端返回FusionCharts例子中的Data.xml文件中的内容
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用Spring的过滤器,在web.xml里面配置
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
追问
这个也不行额。。。我用了字符编码过滤器,struts过滤器,现在加上你的spring的也不好使。。。
追答
function link(arg){
document.getElementById("fom").action="deptTransferAction_load";
document.getElementById("currentPage").value=arg;
document.getElementById("fom").submit();
}
我是这样搞的,就不用GET了,减少很多问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-11-02
展开全部
那么你统一GBK,要么你统一UTF-8把。 另外GET方式传参数,tomcat也需要设置下相同的编码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询