我在Spring控制器中有一个简单的重定向,如下所示:
if (url != null) {
String username = request.getParameter("j_username");
if(username != null) {
username = URLEncoder.encode(username, "UTF-8");
}
url = url + (url.contains("?")? "&":"?") + "j_username=" + username;
getRedirectStrategy().sendRedirect(request, response, url);
}
用户名应该在下一个表单中预先填充。这在我的本地jetty和dev(Tomcat)环境中运行良好(用户名显示为"abc@mysite.com"正确)。但当它到达apache/tomcat上的QA时,用户名会被双重编码,在浏览器地址栏上显示"j_username=abc%22540mysite.com",在表单上显示为"abc%40mysite.com."。以前从未见过这个问题。有指针吗?谢谢。
尝试使用org.springframework.web.util.UriUtils.encodeQueryParam(String, String)
对查询参数进行编码,URLEncoder
太通用,不知道您所在的上下文。