1
     <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>

这是我的查询字符串正在将值发送到打印 list.jsp 但在每个值都在获取

localhost:8080/Cbdt-cir-not/printlist.jsp?CTextSearch=%20&%20CTextNumbr=14%20&%20CYear=%20&%20CSectionNo=&CDatefrom=&CDateto=    %20

所以我没有从 request.get 参数中得到值,请告诉我哪里做错了,我尝试了很多但无法做到。

4

4 回答 4

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")  %>'

在键值对之间有一些空格,它们被解释为聚合键/值的一部分。所以你的键不是“CYear”,你的键是“CYear”,通过删除那些作为键或值的一部分的空格来解决问题。

于 2013-07-16T10:32:27.900 回答
1

使用带有 UTF-8 字符集的 URLEncoder 对 URL 进行编码和解码,在 JavaScript 中构造 URL 时使用 JavaScript 中的 encodeURI 和 decodeURI。

于 2013-07-16T10:46:39.573 回答
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"));
于 2013-07-16T10:34:07.817 回答
1

我只是想添加到@Peter Rader 的答案,您拥有所有这些 %20 的原因是因为 URL 规范(RFC 1738,2094 年 12 月)提出了一个问题,因为它将 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”,它只是字符的表示

于 2013-07-16T10:48:49.690 回答