我正在使用JSF2.2,并配置了servlet过滤器。过滤器中工作的部分代码:
HttpServletResponse response = (HttpServletResponse) resp;
if (userSession == null) {
redirectURLRegular = response.encodeRedirectURL("../login.xhtml?param1=noSession");
redirectURLAjax = response.encodeRedirectURL(request.getContextPath()
+ "/faces/login.xhtml?param1=noSession");
else{
chain.doFilter(req, resp);
return;
if (isAJAXRequest(request)) {
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<partial-response><redirect url=\"").append(redirectURLAjax)
.append("\"></redirect></partial-response>");
response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/xml");
PrintWriter pw = response.getWriter();
pw.println(sb.toString());
pw.flush();
} else {
response.sendRedirect(redirectURLRegular);
}
@ManagedProperty("#{param.param1}")
private String param1;
如果我添加第二个param“../login.xhtml?param1=nosession¶m2=val2”
-常规请求可以工作(发生重定向并看到两个param),但AJAX请求不能工作(没有重定向,什么也不发生)。以下是Firebug报告:
XML Parsing Error: not well-formed Location: moz-nullprincipal:{4584d37a-e799-43db-8379-b0451edca95c} Line Number 1, Column 120:
..."/admin/faces/login.xhtml?param1=noSession¶m2=val2"></redirect></partial-r...
...-------------------------------------------------^
这是如何造成的,我们如何在filter中为AJAX调用设置多个参数?
&
是XML中的一个特殊字符,表示诸如&;
、等实体的开始。XML解析器隐式地查找名称(
amp
、等)和结尾
;
。但是,您并没有这样使用它,因此当WebBrowser的XML解析器意外地遇到=
时,它感觉到了它,这使得它不是格式良好的XML。
您需要将XML特殊字符&
转义为实体&;
。
redirectURLAjax = response.encodeRedirectURL(request.getContextPath()
+ "/faces/login.xhtml?param1=noSession&param2=val2");
我正在编写一个servlet过滤器。我想添加错误并将响应发送回请求来自的页面。 我知道我们可以将反应重定向为 提前致谢
我试图点击一个postendpoint,但它给出了错误302,当我在同一台服务器上尝试另一个get Url时,它给出了200。然后,我使用laxrirectstrategy()重定向了post请求。post请求正在重定向到get请求(只有同一个endpoint的方法名是get和post),它没有从post方法获得响应。有人能告诉我如何使用apahce httpClient 4.5将post请求重定
我们的整个网站将通过https提供服务。我在每条路线上都有“https”。但是,如果他们试图通过http将其重定向到https,我该如何将其重定向到https?
问题内容: 在我的应用程序中,我想应用一个过滤器,但我不希望所有请求都必须转到该过滤器。 这将是一个性能问题,因为我们已经有了其他一些过滤器。 我希望过滤器仅适用于HTTP POST请求。有什么办法吗? 问题答案: 尚无此功能。一个拥有适用于所有的HTTP方法的开销。但是,如果您的代码中包含一些逻辑,这些逻辑会产生开销,那么您不应该将该逻辑应用于不需要的HTTP方法。 这是示例代码:
问题内容: 显然,请求参数的顺序未保留在Tomcat Servlet容器中(对于Google,似乎其他容器也存在相同的问题)。 这似乎是非常错误的。 如何从HttpServletRequest恢复请求参数的实际顺序? *对于那些认为请求参数顺序无关紧要的人来说, *编辑 BTW之间是有区别的: 和 因此,顺序对于重复的请求参数确实很重要(幸运的是Java确实处理了此权利)。 问题答案: 通常,您不
我将spring saml扩展与Apache2.2+Tomcat7.0+OKTA(IdP)一起使用。securitycontext.xml如下所示: MetadataGeneratorFilter: 谢谢 奈良 HTTP请求转储: