request.getParameter - 无法阅读&

时间:2014-07-14 09:27:30

标签: java spring servlets request getparameter

我在阅读包含'&'的值时遇到问题来自url使用java spring。

我的summary.jsp文件包含以下代码: `

<h3>
<fmt:message key="contact.title"/>
<c:if test="${!editMode}">
&nbsp;<label class="eightyfivefont">
<a class="termslink eightyfivefont"
          href="?submitForm=true&amp;
            institutionName=<c:out value="${institution.institutionName}" />&amp;
            repositoryName=<c:out value="${institution.repositoryName}" />&amp;
            editMode=true">
 (edit)</a>
</label>
</c:if>
</h3>

`

产生以下网址:

  

... summary.html submitForm =真安培; institutionName =的R&amp;的R&amp; repositoryName =的R&amp; R

问题是当我尝试获取值为“ r&amp; r ”的 institutionName 时。

使用以下命令获取值时:

String name = request.getParameter("institutionName");

它只获取字符串“r”而不是“r&amp; r”。

该字符串作为"<institutionName>r&amp;r</institutionName>"存储在XML文件中,使用以下代码进行解析和添加:

Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("institution");

并从xml中读取:

Document doc = DocumentHelper.parseText(xml);
Element root = doc.getRootElement();

(我认为问题不在于XML)。

这个问题有解决方案吗?

3 个答案:

答案 0 :(得分:1)

&amp;&amp; amp;&amp;用于划分键值对。如果你想将它作为值或键,那么你必须对它进行urlencode。例如,像这样:

encodeURIComponent('&') = "%26"

您应该可以使用JavaScript。或者,当然是一些Java方法,如果在jsp本身中创建了URL。

答案 1 :(得分:0)

您应该使用URLEncoder对institutionName

进行编码
java.net.URLEncoder.encode("r&r", "UTF-8")

这将输出URL编码,这可以作为GET参数:

r%26r

答案 2 :(得分:0)

检查此answer。创建自定义EL函数或者您可以使用scriptlet,但不建议使用。