在我的应用程序中,当在JSP中使用url标记时,正在使用JSTL标记库1.1版,如下所示。
<c:url var="Url" value="/testUrl">
<c:param name="action" value="login"/>
<c:param name="name" value="test"/>
</c:url>
在旧版本的Internet Explorer中,它转换为:http://applicationurl.com/testUrl?action=login&name=test
虽然在Edge浏览器中,它转换为:
http://applicationurl.com/testUrl?action=login&name=test
因此&转换为“ &
”。现在,当控制器尝试使用下面的代码获取参数名称时。
private void outputRequestParams(HttpServletRequest request) {
Enumeration requestParameter = request.getParameterNames();
while (requestParamNames.hasMoreElements()) {
String paramName = (String)requestParameter.nextElement();
System.out.println("Parameter Name: " + paramName);
}
上面的代码作为参数名称返回下面。
[使用旧的Internet Explorer时:参数名称:名称
[使用Edge浏览器时:参数名称:放大器名称
由于在代码中有很多地方期望参数名称为name,所以在获取amp; name时失败。
我们正在使用servlet api 5.5.23 jar。
问题:
请让我知道是否需要更多信息。预先感谢。
目前看来,唯一的解决方案是将&替换为&并创建URL。这项更改对我来说是有效的,因为我已经采用了从所有位置调用的通用方法。如果有人有更好的解决方案,请提出。