2012-02-07 45 views
0

我在春天控制器简单的重定向操作如下:Tomcat或Apache的编码自动重定向URL

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); 
} 

该用户名应该在未来的形式预先填充。这可以在我的本地码头和开发(Tomcat)环境中正常工作(用户名正确显示为“[email protected]”)。但是当它到达apache/tomcat上的QA时,用户名将被双重编码,它会在浏览器地址栏上显示“j_username = abc%2540mysite.com”,并在表单上显示为“abc%40mysite.com”。之前从未见过这个问题。任何指针?谢谢。

回答

0

尝试使用org.springframework.web.util.UriUtils.encodeQueryParam(String, String)编码查询参数,URLEncoder是太普通,不知道你所在的环境。