是这样的。请先看下面的代码:<script> var URL = '/zmt/tiles/ry/openSelectField.jsp?excel=excel&where='+where;
openwin(URL,'400','830');
</script>where的值是带有like和百分号的。例如:
where = "name like %林%"
参数传到openSelectField.jsp后。我使用下面的代码去拿到参数的值,如下:String where = (String)request.getParameter("where");但是却发现where = null。碰到这个问题后,我就先用不带%的参数值。例如 whereExcel=" name = 林彬"
试一下openSelectField.jsp中是否可以拿到值。结果是可以拿到的。
所以我就用了java中的URLEncoder来处理。URLEncoder.encode(where,"UTF-8")处理完后,再次调用如下代码:var URL = '/zmt/tiles/ry/openSelectField.jsp?excel=excel&where='+where;
openwin(URL,'400','830');则openSelectField.jsp上是可以拿到值的。
但是此时我在openSelectField.jsp上有一个按钮。点击完后,想把这个where传到action上去。这个时候,无论我在action中如何处理,都是乱码。这样导致我无法访问数据库了。在action中我是用RLDecoder.decode(where,"UTF-8");
来做的。
还试验了。 where = new String(where.getBytes("ISO8859_1"),"UTF-8"); 以及request.setCharacterEncoding(arg0)
等方式。就是不行。请问我该如何解决这个问题。像javascipt中,还有encodeURI() 和encodeURIComponent等。目前还没有试过。我觉得最主要是不是%百分号的问题。
openwin(URL,'400','830');
</script>where的值是带有like和百分号的。例如:
where = "name like %林%"
参数传到openSelectField.jsp后。我使用下面的代码去拿到参数的值,如下:String where = (String)request.getParameter("where");但是却发现where = null。碰到这个问题后,我就先用不带%的参数值。例如 whereExcel=" name = 林彬"
试一下openSelectField.jsp中是否可以拿到值。结果是可以拿到的。
所以我就用了java中的URLEncoder来处理。URLEncoder.encode(where,"UTF-8")处理完后,再次调用如下代码:var URL = '/zmt/tiles/ry/openSelectField.jsp?excel=excel&where='+where;
openwin(URL,'400','830');则openSelectField.jsp上是可以拿到值的。
但是此时我在openSelectField.jsp上有一个按钮。点击完后,想把这个where传到action上去。这个时候,无论我在action中如何处理,都是乱码。这样导致我无法访问数据库了。在action中我是用RLDecoder.decode(where,"UTF-8");
来做的。
还试验了。 where = new String(where.getBytes("ISO8859_1"),"UTF-8"); 以及request.setCharacterEncoding(arg0)
等方式。就是不行。请问我该如何解决这个问题。像javascipt中,还有encodeURI() 和encodeURIComponent等。目前还没有试过。我觉得最主要是不是%百分号的问题。
解决方案 »
- struts2 超链接删除404
- Strust配置文件详解!!!
- 联动问题,进来看看(无权发那么多分,以后再加)
- 菜鸟问题!!!!急
- 江湖告急!!!!!在myeclipse中整合spring和hibernate的问题,100分求问!!解决分全给!
- 有人用过turbine吗
- 终于可以放200分了。散。呼吁大家提问了,记的结贴。
- help , 为什么i2ee 运行出错.
- tomcat下,客户端ie6升级到sp1出现session过期的错误……
- 请各位高人推荐EJB 和 CORBA 方面的“好”书!!!
- sun.misc.BASEDecoder和Encoder不能用怎末回事
- [求助]quartz框架Scheduler的Job调度的类中可以使用session吗?
我用get方式传递到action 出现乱码,一直到现在都没解决,试了各种办法
2,地址栏中的参数使用 URL 编码。JavaScript 使用 encodeURI 方法,Java 使用 URLEncoder.encode 方法,JSTL 中可以直接使用 <c:url> 和 <c:param>
var formobj = obj.form;
var whereExcel = "<%=whereExcel%>";
if(whereExcel.indexOf('like') >= 0)
{
whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>'; }
//alert(whereExcel);
var sumCount = "<%=sumNote%>";
//alert(whereExcel);
//retrun;
var URL = '/zmt/tiles/ry/openSelectField.jsp?excel=excel&sumCount='+sumCount+'&whereExcel='+whereExcel;
openwin(URL,'400','830');
此时是传递到openSelectField.jsp页面上的。
所以openSelectField.jsp首先得这样处理的:whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';
接下来又是使用下面的代码调用action的话,则 如下:
var formObj = obj.form;
var whereExcel = "<%=whereExcel%>";
alert(whereExcel);
var sumCount = "<%=sumCount%>";
if(whereExcel.indexOf('like') >= 0)
{
whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';
formObj.action='/zmt/ry/search.do?excel=excel&sumCount='+sumCount+'&hasLike=like&whereExcel='+whereExcel;
}else
{
formObj.action='/zmt/ry/search.do?excel=excel&sumCount='+sumCount+'&whereExcel='+whereExcel;
}
formObj.submit.click();
最后在action中还得这样处理whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';
就可以了。==================================================================
这样的话,最终传到action后,才可以拿到%林%这样的值的