<a href="
javascript:openWin
('printlist.jsp?CTextSearch=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtSearch"),"UTF-8")%> & CTextNumbr=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtNum"),"UTF-8") %> & CYear=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$cmbYear"),"UTF-8") %> & CSectionNo=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$cmbSection"),"UTF-8") %>&CDatefrom=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtDateFrom"),"UTF-8") %>&CDateto=<%= URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtDateTo"),"UTF-8") %>'
)" id="ctl00_PagingHolder_btnPrint" class="gena" onclick="">
Print List</a>
这是我的查询字符串,我将值发送到print list.jsp 但是在每个值中获取
localhost:8080/Cbdt-cir-not/printlist.jsp?CTextSearch=%20&%20CTextNumbr=14%20&%20CYear=%20&%20CSectionNo=&CDatefrom=&CDateto= %20
所以我没有得到它的价值 来自request.get parmeter请告诉我在哪里 做错了我已经尝试了很多但无法做到。
答案 0 :(得分:2)
使用此:
('printlist.jsp?CTextSearch=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtSearch"),"UTF-8")%>&CTextNumbr=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtNum"),"UTF-8") %>&CYear=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$cmbYear"),"UTF-8") %>&CSectionNo=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$cmbSection"),"UTF-8") %>&CDatefrom=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtDateFrom"),"UTF-8") %>&CDateto=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtDateTo"),"UTF-8") %>'
而不是
('printlist.jsp?CTextSearch=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtSearch"),"UTF-8")%> & CTextNumbr=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtNum"),"UTF-8") %> & CYear=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$cmbYear"),"UTF-8") %> & CSectionNo=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$cmbSection"),"UTF-8") %>&CDatefrom=<%=URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtDateFrom"),"UTF-8") %>&CDateto=<%= URLEncoder.encode(request.getParameter("ctl00$SearchCriteriaHolder$txtDateTo"),"UTF-8") %>'
键值对之间有一些空格,被解释为congrete键/值的一部分。所以你的密钥不是“CYear”,你的密钥是“CYear”,通过删除那些属于密钥或值的空格来解决问题。
答案 1 :(得分:1)
您可以尝试使用URLDecoder
String test = "ocalhost:8080/Cbdt-cir-not/printlist.jsp?
CTextSearch=%20&%20CTextNumbr=
14%20&%20CYear=%20&%20CSectionNo=&
CDatefrom=&CDateto= %20";
System.out.println(URLDecoder.decode(test, "utf-8"));
答案 2 :(得分:1)
使用带有UTF-8字符集的URLEncoder来编码和解码URL, 在Java Script中构造URL时,请在JavaScript中使用encodeURI和decodeURI。
答案 3 :(得分:1)
我只想添加@Peter Rader回答说你拥有所有那些%20的原因是因为URL规范(RFC 1738,Dec。'94)存在问题,因为它限制了允许字符的使用在URL中只有US-ASCII字符集的有限子集:
“...只有字母数字[0-9a-zA-Z],特殊字符”$ -_。+!*'(),“
[不包括引号 - ed],用于保留目的的保留字符可以在URL中以未编码的形式使用。“
另一方面,HTML允许在文档中使用整个范围的ISO-8859-1(ISO-Latin)字符集 - 而HTML4扩展了允许的范围以包括所有Unicode字符集。对于非ISO-8859-1字符(Unicode集中的字符大于FF十六进制/ 255十进制),它们只能在URL中使用,因为没有安全的方法来指定URL内容中的字符集信息然而[RFC2396。]这就是为什么当你试图把空白空间转换为“%20”时,它只是一个字符的表示