如果值是哈希符号(#),如何获取请求参数值

时间:2013-08-10 18:06:06

标签: java jsp

我有以下请求网址:

localhost:8080/MyApp/browse/alphabetical/result?startsWith=#&page=1&size=10&sort=title&order=asc

请注意请求参数"startsWith=#"

我无法将"#"作为'startsWith'请求参数的值。相反,我得到一个空字符串(“”)作为'startsWith'请求参数的值。有没有办法让"#"作为请求参数的值?

这不起作用:${param.startsWith eq '#'}

这项工作:${param.startsWith eq ''}

如果无法解决此问题,我将不得不使用startsWith=0 ... startsWith=9代替startsWith=#,我真的不想要

1 个答案:

答案 0 :(得分:6)

您无法像这样发送带有查询字符串的#。它不会是查询字符串的一部分。

引用RFC - Section 3.4

  

查询组件由第一个问题指示      标记(“?”)字符并以数字符号(“#”)字符结束      或者在URI的末尾。

在发送请求之前,您需要在查询字符串中对参数进行编码。例如,在JSP页面中,您可以使用<c:url> JSTL标记:

<c:url value="/MyApp/browse/alphabetical/result" var="url">
  <c:param name="startsWith" value="#" />
  <!-- Rest of the parameters -->
</c:url>