3

我在使用 java spring 从 url 读取包含“&”的值时遇到问题。

我的 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=true&institutionName=r&r&repositoryName=r&r

问题是当我试图获取持有值“ r&r ”的机构名称时。

使用以下命令获取值时:

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

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

字符串存储在 XML 文件中"<institutionName>r&amp;r</institutionName>",使用以下方法解析和添加:

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

并从 xml 中读取:

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

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

这个问题有解决方案吗?

4

3 回答 3

1

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

encodeURIComponent('&') = "%26"

您应该能够为此使用 JavaScript。或者,当然,一些 Java 方法,如果 URL 是在 jsp 本身中创建的。

于 2014-07-14T09:36:21.323 回答
0

您应该使用URLEncoder来编码机构名称

java.net.URLEncoder.encode("r&r", "UTF-8")

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

r%26r
于 2014-07-14T09:42:39.110 回答
0

检查这个答案。创建一个自定义 EL 函数,否则您可以使用 scriptlet,但不建议这样做。

于 2014-07-14T09:46:43.740 回答